2015-05-19 52 views
1

我正在使用GDB调试我的msp430。我连接目标,然后加载程序的二进制文件,然后“继续”。在调试msp430时打印GDB中的变量值

我的程序工作正常,但我想实时查看某些变量值。其实我想检查我的代码开始和代码结束的时间戳,这将给我总持续时间。

我作为全新的广发行,目前我已经把这个线在我的代码打印

printf("Hello World\n"); 

不过只是我的代码工作正常,这实际上是闪烁的LED。

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

感谢

+0

你对gdb打印变量有谷歌吗?看看这个:http://stackoverflow.com/q/6261392/3684343 – mch

+0

嗨。是的,我用Google搜索了一下。然而,我的问题是从硬件上运行的代码获取变量值,而不是软件。 – Hassan

+0

也许你想要的是*观察点*。这有帮助:https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html –

回答

0

对于时间戳,你可能想要做的是设置两个断点,一个在代码的开始,和一个结尾。让每个断点记录时间,例如通过调用适当的函数。通过使用commands功能,您可以使断点执行某些操作。

但是,如果这是您想要频繁执行的操作,那么您可以考虑将代码添加到您的程序中。

对于远程调试时对变量的实时(-ish)访问,您可能会对gdb“tracepoint”功能感兴趣。目前此功能仅在远程调试时才有效,它依赖于具有所需功能的远程调试服务器。跟踪点使您可以在选定的点上记录一些选定的变量,然后再检查它们。录音是在合理的最小开销下完成的。

1

要打印变量在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行,打印计数器的值,然后继续运行程序。