я написал очень маленькую прогу ниже, чтобы добавить два целых числа только для проверки использования точек трассировки.
1 #include<stdio.h>
2 main(){
3 int x,y,sum;
4 x = 3;
5 y = 4;
6 sum = x + y;
7 printf("sum = %d\n",sum);
8 }
на одном терминале я запустил gdbserver как:
$ gdbserver :10000 ./chk
Process ./chk created;
pid = 13956
Listening on port 10000
Remote debugging from host 127.0.0.1
На другом терминале я запустил GDB как:
$ gdb -ex 'target remote :10000' ./chk
и затем следующие шаги, как показано ниже:
(gdb) trace chk.c:6
Tracepoint 1 at 0x80483fd: file chk.c, line 6.
(gdb) passcount 1 1
Setting tracepoint 1's passcount to 1
(gdb) actions 1
Enter actions for tracepoint 1, one per line.
End with a line saying just "end".
>collect $regs
>end
(gdb) tstart
(gdb) tstatus
Trace is running on the target.
Collected 0 trace frames.
Trace buffer has 5242880 bytes of 5242880 bytes free (0% full).
Trace will stop if GDB disconnects.
Not looking at any trace frame.
(gdb) tstop
(gdb) tfind
Target failed to find requested trace frame.
(gdb) tdump
warning: No current trace frame.
Может кто-нибудь, пожалуйста, дайте мне знать, почему tstatus, tfind и tdump дают мне такой вывод? В чем здесь проблема? Как я могу проверить значение моего следа (который я дал здесь как $ regs)?