Macos LLDB为提供的函数名显示错误的行

Macos LLDB为提供的函数名显示错误的行,macos,lldb,Macos,Lldb,下面是用于调试测试的示例源 #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; } #包括 int k(){ 看跌期权(“测试”); //以上行重复一定数量 返回0

下面是用于调试测试的示例源

#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;
}
#包括
int k(){
看跌期权(“测试”);
//以上行重复一定数量
返回0;
}
int main(){
看跌期权(“测试”);
//以上行重复一定数量
返回0;
}
我在上面汇编了:
clang-g-o测试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按名称列出函数时,它会在符号名周围显示一个窗口,因为人们通常将返回类型与函数名放在单独的一行上,但函数名的行号总是在调试信息告诉lldb函数所在的位置。这样您可以看到整个函数定义。但是实际名称应该大致在列表的中间。 还请注意,list命令auto repeat将继续列出,因此您可以继续点击Return(自动重复最后一个命令)来查看更多源代码

如果您没有看到这种情况,请首先尝试运行
lldb-x
,以确保.lldbinit中没有影响这种情况的内容


如果仍然没有帮助,请提交一个bug。

根据您的示例,我看到:

(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中没有影响这种情况的内容


如果仍然没有帮助,请提交一个bug。

您可以尝试使用更长的源代码吗?在
k
main
中再添加至少15行。你看到了什么?我只是想知道其他Mac的行为。我在main和k中添加了一堆线,并添加了一些其他函数,“main”线略低于中点,就像上面一样。请注意,lldb(或clang,我还不确定是哪个)有一个已知的bug,其中列出函数名列出了函数的声明,而不是它的定义源代码行。例如,如果声明位于.h文件中,它将列出.h文件中的行。也许你看到了?不,我没有从你的律师事务所得到什么。我确实做了
listmain
,我的lldb在
intk()中间显示了这一行,此时可能最好提交一个bug。请确保提供您正在使用的lldb&clang版本。是否可以尝试使用更长的源代码?在
k
main
中再添加至少15行。你看到了什么?我只是想知道其他Mac的行为。我在main和k中添加了一堆线,并添加了一些其他函数,“main”线略低于中点,就像上面一样。请注意,lldb(或clang,我还不确定是哪个)有一个已知的bug,其中列出函数名列出了函数的声明,而不是它的定义源代码行。例如,如果声明位于.h文件中,它将列出.h文件中的行。也许你看到了?不,我没有从你的律师事务所得到什么。我确实做了
listmain
,我的lldb在
intk()中间显示了这一行,此时可能最好提交一个bug。请确保提供您正在使用的lldb&clang版本。