LLDB 显示提供的函数名称的错误行
LLDB displays wrong line for the provided function name
下面是用于调试测试的示例源码
#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 是怎么回事???
根据你的例子,我明白了:
(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 按名称列出一个函数时,它会在符号名称周围显示一个 window,因为人们经常将 return 类型与函数名称放在不同的行中,但是函数name 的行号总是在调试信息告诉 lldb 函数所在的位置。这样你就可以看到整个函数定义。但实际名称应该大致在列表的中间。
另请注意,列表命令 auto-repeat 将继续列表,因此您可以继续点击 Return(auto-repeat 是最后一个命令)以查看更多源.
如果这不是您所看到的,请先尝试 运行 lldb -x
以确保您的 .lldbinit 中没有影响此的内容。
如果仍然没有帮助,请使用 http://bugs.llvm.org 提交错误。
下面是用于调试测试的示例源码
#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 是怎么回事???
根据你的例子,我明白了:
(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 按名称列出一个函数时,它会在符号名称周围显示一个 window,因为人们经常将 return 类型与函数名称放在不同的行中,但是函数name 的行号总是在调试信息告诉 lldb 函数所在的位置。这样你就可以看到整个函数定义。但实际名称应该大致在列表的中间。
另请注意,列表命令 auto-repeat 将继续列表,因此您可以继续点击 Return(auto-repeat 是最后一个命令)以查看更多源.
如果这不是您所看到的,请先尝试 运行 lldb -x
以确保您的 .lldbinit 中没有影响此的内容。
如果仍然没有帮助,请使用 http://bugs.llvm.org 提交错误。