写入系统调用时gdb catchpoint无法正常工作

时间:2017-01-30 16:30:10

标签: gdb clang llvm

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

我尝试在write syscall上设置一个catchpoint:

(gdb) catch syscall write
Catchpoint 2 (syscall 'write' [1])

我还设置了一个断点:

(gdb) break write
Breakpoint 3 at 0x7ffff6a7c700: write. (2 locations)

但是当我编译测试程序时,没有触发断点:gdb正常退出。我确认它写了输出文件,所以必须在某处调用write。有谁知道我在这里做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

有一个"最常见的"可能性,调试clang而不是clang -cc1。驱动程序重新执行自己,以便通过在生成的程序中捕获错误来提供堆栈跟踪和其他事情,如果您正在调试clang,它将无法设置断点,因为它我们没有调用任何有断点的代码。

你可以使用clang和-v来获取-cc1命令行,然后将gdb --args设置为。