为什么LLDB>v320.4.160再也找不到我的源文件了?
why can't lldb > v320.4.160 find my source files anymore?
Im通过外部构建系统使用Xcode进行C++开发。如果我使用Xcode6.2(lldb320.4.160),一切都很好,我可以设置断点,它们会被击中——一切都很不错。但是,如果我想升级到Xcode的新版本,例如7.3(lldb350.0.213),我的断点将不再被击中。到目前为止,我的研究告诉我,由于某种原因,新的lldb无法设置断点。
一旦我停止执行程序并键入(lldb) breakpoint list
,我的输出如下所示:
Current breakpoints:
1: file = '/full/path/to/src/main.cpp', line = 842, exact_match = 0, locations = 0 (pending)
2: file = '/full/path/to/src/class.cpp', line = 383, exact_match = 0, locations = 0 (pending)
3: file = '/full/path/to/src/Homie.cpp', line = 12, exact_match = 0, locations = 0 (pending)
最后的CCD_ 2表明bp不能正确设置。如果我现在通过breakpoint set --file main.cpp --line 842
在lldb中设置断点,我会得到一个断点,(lldb) breakpoint list
会给出以下输出:
4: file = 'main.cpp', line = 12, exact_match = 0, locations = 1, resolved = 1, hit count = 0
4.1: where = TEST`::__cxx_global_array_dtor() + 29 at main.cpp:842, address = 0x000000010027130d, resolved, hit count = 0
这个断点在程序执行过程中被击中-一切都很好
如果我尝试使用Xcode6.2在同一可执行文件上设置断点,则调试器可以成功地找到源文件,即使有完整的文件路径。
如何使新的lldb版本正确设置断点?
谢谢!
Xcode总是设置文件&行断点,使用它到源的完整路径的概念。当Xcode构建项目时,它可以确保它的"源代码的完整路径"和它为编译器提供的内容(以及编译器随后在调试信息中写入的内容)是相同的。但对于外部构建系统,它们可能不一样(例如,构建系统可能通过复杂的相对路径或符号链接等引用路径。)调试器不能解析所有源文件路径的路径,这对于大型项目来说太昂贵了。因此,如果这些不匹配,则通过完整路径设置断点将不起作用。
您可以通过设置断点,然后找到位置的地址(上例中为0x000000010027130d)并运行以下命令来找出调试器认为您的main.cpp有什么路径:
(lldb) image lookup -va 0x000000010027130d
输出行之一将是编译单元:
CompileUnit: id = {0x00000000}, file = "/tmp/hello-world.c", language = "c99"
这里给出的完整路径与Xcode设置断点时看到的路径相同吗。如果是,我不知道可能出了什么问题,但如果不是,你知道原因,这可能会给你指明解决问题的方向。
- CMake:在其他目录中找不到我的头文件
- 为什么在qt c++中找不到我的插槽?
- 我在 c++ 中的 AES 代码有问题。明文正在更改,但加密邮件是相同的。我找不到我的错误
- 为什么找不到我的着色器属性?
- Visual Studio 测试资源管理器找不到我的提升测试
- 为什么 Tensorflow 找不到我的自定义操作的 GPU 内核?
- Android找不到我的JNI原生库函数
- 找不到我的内存泄漏
- 制作找不到我的 .so.2.4.8 文件
- 为什么 UMDH 找不到我的符号?我可以在没有它们的情况下解释堆栈跟踪吗?
- 为什么ValGrind找不到我的符号?
- 模板定义找不到我的函数
- 将十进制转换为十六进制,找不到我的逻辑错误
- Xcode调试器找不到我的文件
- 为什么LLDB>v320.4.160再也找不到我的源文件了?
- Netbeans 8.1(适用于 C/C++)找不到我的编译器(gcc-6.0.0 开发版本)
- 为什么编译器找不到我的头文件?
- 即使我修改了LD_LIBRARY_PATH,也找不到我的共享库
- windbg 和 VS 找不到我的 pdb 文件
- G++ 找不到我的库