我正在使用GDB调试我的msp430。我连接目标,然后加载程序的二进制文件,然后“继续”。在调试msp430时打印GDB中的变量值
我的程序工作正常,但我想实时查看某些变量值。其实我想检查我的代码开始和代码结束的时间戳,这将给我总持续时间。
我作为全新的广发行,目前我已经把这个线在我的代码打印
printf("Hello World\n");
不过只是我的代码工作正常,这实际上是闪烁的LED。
请指导我如何在调试模式下查看GDB中变量的值。
感谢
我正在使用GDB调试我的msp430。我连接目标,然后加载程序的二进制文件,然后“继续”。在调试msp430时打印GDB中的变量值
我的程序工作正常,但我想实时查看某些变量值。其实我想检查我的代码开始和代码结束的时间戳,这将给我总持续时间。
我作为全新的广发行,目前我已经把这个线在我的代码打印
printf("Hello World\n");
不过只是我的代码工作正常,这实际上是闪烁的LED。
请指导我如何在调试模式下查看GDB中变量的值。
感谢
对于时间戳,你可能想要做的是设置两个断点,一个在代码的开始,和一个结尾。让每个断点记录时间,例如通过调用适当的函数。通过使用commands
功能,您可以使断点执行某些操作。
但是,如果这是您想要频繁执行的操作,那么您可以考虑将代码添加到您的程序中。
对于远程调试时对变量的实时(-ish)访问,您可能会对gdb“tracepoint”功能感兴趣。目前此功能仅在远程调试时才有效,它依赖于具有所需功能的远程调试服务器。跟踪点使您可以在选定的点上记录一些选定的变量,然后再检查它们。录音是在合理的最小开销下完成的。
要打印变量在gdb可以使用print
命令
(gdb) print counter
您可以在第10行设置断点与break 10
。然后附加一个命令序列,每当程序在断点1停止时都要运行,命令为commands 1
。下面是一个例子:
(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行,打印计数器的值,然后继续运行程序。
你对gdb打印变量有谷歌吗?看看这个:http://stackoverflow.com/q/6261392/3684343 – mch
嗨。是的,我用Google搜索了一下。然而,我的问题是从硬件上运行的代码获取变量值,而不是软件。 – Hassan
也许你想要的是*观察点*。这有帮助:https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html –