写入系统调用上的gdb捕获点不工作

写入系统调用上的gdb捕获点不工作,gdb,clang,llvm,Gdb,Clang,Llvm,我正在调试GNU/Linux上的clang编译器中发现的一个问题(已报告)。为了找到问题,我需要从clang写入输出文件的位置向后调试 我尝试在write系统调用上设置一个捕获点: (gdb) catch syscall write Catchpoint 2 (syscall 'write' [1]) 我还设置了一个断点: (gdb) break write Breakpoint 3 at 0x7ffff6a7c700: write. (2 locations) 但当我编译一个测试程序时,并

我正在调试GNU/Linux上的clang编译器中发现的一个问题(已报告)。为了找到问题,我需要从clang写入输出文件的位置向后调试

我尝试在write系统调用上设置一个捕获点:

(gdb) catch syscall write
Catchpoint 2 (syscall 'write' [1])
我还设置了一个断点:

(gdb) break write
Breakpoint 3 at 0x7ffff6a7c700: write. (2 locations)
但当我编译一个测试程序时,并没有触发断点:gdb只是正常退出。我确认它写入了输出文件,所以write必须在某个地方被调用。有人知道我可能做错了什么吗?谢谢

有一种“最常见”的可能性,调试
clang
而不是
clang-cc1
。驱动程序重新执行自身,以便通过捕获派生程序中的错误来更轻松地提供堆栈跟踪和其他内容。如果您正在调试
clang
,它将无法设置断点,因为它不会调用任何您有断点的代码


您可以使用带-v的clang获得-cc1命令行,然后将gdb--args设置为该命令行。

Ah,谢谢!我不知道叮当-cc1。要调试-cc1,我是否只需将-cc1添加到命令行参数中?非常感谢!我使用-v运行了我的初始命令,然后将我的gdb参数设置为该值,断点被触发!非常感谢!我已将此标记为答案。