Отслеживание точки отслеживается, но действия трассировки не работают нормально. на последней стороне gdb ниже показано, что точка трассировки прослеживается. , но «собирать $ regs» не работает должным образом.Действие gdb tracepoint не работает
моя платформа RH6.4.
1. сторона gdbserver.
gdbserver :10000 ./a.out
Process ./a.out created; pid = 10466
Listening on port 10000
Remote debugging from host 127.0.0.1
2. GDB сторона.
gdb a.out
(gdb) target remote :10000
Remote debugging using :10000
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x00000033b7000b00 in _start() from /lib64/ld-linux-x86-64.so.2
Created trace state variable $trace_timestamp for target's variable 1.
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.x86_64
(gdb) trace main
Tracepoint 1 at 0x400541: file a.c, line 12.
(gdb) actions 1
collect $regs
end
(gdb) tstart
(gdb) break 15
Breakpoint 2 at 0x40055f: file a.c, line 15.
Breakpoint 2, main (argc=1, argv=0x7fffca819f08) at a.c:18
18 sleep (1);
(gdb) cont
Continuing.
(gdb) tstop
(gdb) tfind
Found trace frame 0, tracepoint 1
12 c = 2;
Что вы подразумеваете под «" collect $ regs "не работает должным образом". –
Когда трассировка 1 ударяется, $ regs следует сбрасывать «собирать $ regs». $ Regs - это разные регистры x86. поскольку никакие регистры x86 не сбрасываются, поэтому я предполагаю, что «собирать $ regs» не работает должным образом. – huiming
@huiming Пожалуйста, проверьте мое обновление на мой собственный ответ, но, просто подведя итоги, как только вы вызвали 'tfind', чтобы сбросить всю собранную информацию, вы должны называть' tdump' – jcm