关于C#:调试msp430时GDB中变量的打印值

Print value of variable in GDB while debugging msp430

我正在使用gdb调试msp430。我连接目标,然后加载程序的二进制文件,然后"继续"。

我的程序运行良好,但是我想实时查看变量的某些值。实际上,我想检查代码开始和结束的时间戳,这将给我总的持续时间。

因为我对gdb完全陌生,所以目前我已经在代码中放置了这行代码。

1
2
printf("Hello World
"
);

然而,没有打印任何东西,但我的代码工作正常,这实际上是闪烁的LED。

请指导我如何在调试模式下查看gdb中变量的值。

谢谢


要在gdb中打印变量,可以使用print命令

1
(gdb) print counter

您可以使用break 10在第10行设置断点。然后在每次程序停止在断点1时使用commands 1附加一系列要运行的命令。示例如下:

1
2
3
4
5
6
7
8
9
(gdb) break 10
Breakpoint 1 at 0x1c4d: file example.c, line 10.
(gdb) commands 1
Type commands for breakpoint(s) 1, one per line.
End with a line saying just"end".
>print counter
>continue
>end
(gdb) continue

所以这将在第10行中断,打印计数器的值,然后继续程序。


对于时间戳,您可能希望设置两个断点,一个在代码的开头,一个在代码的结尾。让每个断点记录时间,比如调用适当的函数。您可以使用commands特性使断点执行操作。

但是,如果这是您经常要做的事情,您可以考虑只向程序中添加代码来完成它。

对于远程调试时对变量的实时访问(-ish),您可能对gdb"tracepoint"特性感兴趣。当前,此功能仅在远程调试时工作,它依赖于具有所需功能的远程调试服务器。跟踪点允许您在选定的点上记录一些选定的变量,然后在以后检查它们。记录是以相当小的开销完成的。