如何使用gdb在c中观看字符串

时间:2013-04-17 03:17:06

标签: c string gdb watch

作为toppic,我希望我能在c中观看一个字符串,例如下面。
我希望我只有在你好的时候才能停止 - 好吧,好的 - >你好,我应该这样做吗?


char s[10];
strcpy(s,"HELLO");
strcpy(s,"HELLO");
strcpy(s,"HELLO");
strcpy(s,"GOOD");
strcpy(s,"GOOD");
strcpy(s,"GOOD");
strcpy(s,"HELLO");
strcpy(s,"HELLO");
strcpy(s,"HELLO");

3 个答案:

答案 0 :(得分:2)

this question的答案可能会对您有所帮助。

我无法使用该语法设置 watchpoint (这将是完美的解决方案),但display命令是一个非常好的选择。每次执行中断时,它都会打印出表达式的结果。

要使其适用于您的代码,请在char s[10];行设置断点,并找出s数组的地址(带p s)。然后,使用display *(char *)0x00000000@10设置显示(其中0x00000000是数组的地址,@之后的数字是数组的大小)。然后,您可以在程序的不同位置设置断点,以便每次缩小搜索空间。

答案 1 :(得分:1)

作为一种解决方法,您可以为表达式设置监视

watch s[0]+s[1]+s[2]+s[3]

将在字符串中的前四个字符中的任何一个更改

时停止

答案 2 :(得分:-2)

你可以通过用-g编译tha程序来使用gdb然后创建一个断点,然后使用n看看debugging .....但经常使用printf语句,以便你可以看到实际发生了什么....