我有一个我正在尝试跟踪的OpenGL库错误,并且该错误会将类似C代码的内容打印到stdout中.这是程序,一旦glutMainLoop()
调用就会发生错误,但我怀疑这不是那个错误的函数.我如何跟踪写入stdout的函数?
根据要求,输出:
arc_ccw_turn, p = 0
case b
arc_ccw_turn, p = 0
case d
arc_ccw_turn, p = 0
case a
arc_ccw_turn, p = 0
case c
Run Code Online (Sandbox Code Playgroud)
我已经报告了这个bug,但我也尝试为这个问题提供GDB回溯.
如果您正在使用Linux,则设置断点write()
,所有输出到stdout
并stderr
最终通过此功能.以下是针对x86-64
其他体系结构,您需要更改寄存器名称:
$ gdb /usr/bin/cat
Reading symbols from /usr/bin/cat...(no debugging symbols found)...done.
(gdb) set args /proc/cpuinfo
(gdb) b write
Breakpoint 1 at 0x401740
(gdb) condition 1 ($rdi == 1 || $rdi == 2)
(gdb) display $rdi
(gdb) display $rsi
(gdb) display $rdx
(gdb) r
Starting program: /usr/bin/cat /proc/cpuinfo
3: $rdx = 3368
2: $rsi = 6348800
1: $rdi = 1
(gdb) p (char*)$rsi
$4 = 0x60e000 "processor\t: 0\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 30\nmodel name\t: Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz\nstepping\t: 5\nmicrocode\t: 0x5\ncpu MHz\t\t: 1199.000\ncache size\t: 8192 KB\nphy"...
Run Code Online (Sandbox Code Playgroud)