以下是用于调试测试的示例源
#include <stdio.h>
int k() {
puts("test");
// above line repeats to certain amounts
return 0;
}
int main() {
puts("test");
// above line repeats to certain amounts
return 0;
}
我在上面汇编了:
clang -g -o test test.c
当我在LLDB提示符中运行list main
时,LLDB会显示属于int k() {...}
的行。即使第一行int main() {...}
也未显示。
更奇怪的是,LLDB为符号main
设置了正确的断点。
LLDB发生了什么?
答案 0 :(得分:2)
举个例子,我看到了:
(lldb) list main
File: /tmp/test.c
3 puts("test");
4 // above line repeats to certain amounts
5 return 0;
6 }
7
8 int main() {
9 puts("test");
10 // above line repeats to certain amounts
11 return 0;
12 }
当lldb按名称列出一个函数时,它会在符号名称周围显示一个窗口,因为人们经常将返回类型放在与函数名称不同的行上,但函数名称的行号总是在哪里调试信息告诉lldb函数是什么。这样您就可以看到整个函数定义。但实际名称应大致位于列表中间。
另请注意,list命令auto-repeat将继续列表,因此您可以继续点击Return(自动重复上一个命令)以查看更多来源。
如果这不是您所看到的,请先尝试运行lldb -x
,以确保您的.lldbinit中没有影响此内容的内容。
如果仍然没有帮助,请提交http://bugs.llvm.org的错误。