我正在尝试使用 LLDB(因为我显然不能再使用 gdb)来调试我的一些代码,每次我尝试......
(lldb) breakpoint set -f file.c -l 65
我明白了...
Breakpoint 1: no locations (pending)
WARNING: Unable to resolve breakpoint to any actual locations.
我尝试过不同的方法,例如将断点分配给函数等,但我总是遇到相同的错误。跑步时没有休息。请帮忙!
如果您的
out
文件没有为 Code Generation Options
启用调试符号,则断点可能无法解析到 .c
源文件中的位置。
创建
out
文件时启用调试信息:
$ clang -g -O0 file.c -o file
$ lldb file
(lldb) target create "file"
Current executable set to 'file' (x86_64).
(lldb) b file.c:13
Breakpoint 1: where = file`main + 29 at file.c:13, address = 0x0000000100000f4d
使用
-g
选项将必要的调试信息添加到 lldb
文件中。现在,当您breakpoint set -f file.c -l n
(可以缩写为b file.c:n
)时,它应该可以解决。
生成调试信息。注意Clang调试信息 在-g
时效果最佳。-O0
-O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4
指定要使用的优化级别:
-O0 表示“无优化”:此级别编译速度最快并生成最可调试的代码。
-O1 介于 -O0 和 -O2 之间。
-O2 中等级别的优化,可实现大多数优化。
-O3 与 -O2 类似,不同之处在于它允许执行需要更长时间的优化或可能生成更大的代码(试图使 程序运行速度更快)。
-Ofast 启用 -O3 中的所有优化以及可能违反严格遵守的其他激进优化 语言标准。
-Os 类似于 -O2,具有额外的优化以减少代码大小。
-Oz 类似于 -Os(以及 -O2),但进一步减少了代码大小。
-Og 就像-O1。在未来的版本中,此选项可能会禁用不同的优化以提高可调试性。
-O 相当于-O1。
-O4 及更高版本目前相当于 -O3