我在C ++中创建了一个Hello World示例,并尝试使用来自Mac OSX终端的lldb进行调试。
> lldb a.out
Current executable set to 'a.out' (x86_64).
我可以在名称上设置断点(例如'main'),但不能在行号上设置断点。如果我试试
breakpoint set --file test.c --line 5
或
b test.c:5
我得到了
Breakpoint 1: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
文件'test.c'位于当前文件夹中。出了什么问题?
答案 0 :(得分:3)
根据Dwarf Debugging Information Format,行号,文件位置信息以Dwarf格式存储。这些信息是GDB用来将行号设置为断点的信息。
通常,Dwarf格式信息由编译器生成,例如带有-g
选项的GCC。请尝试使用-g
选项查看是否有效。
同时,还有some other debug helpful options in GCC可能对您更有帮助,例如-g3
,编译器将为调试生成更多详细信息,例如宏。