为了学习“数据断点”的设置和使用,我根据参考资料上的一个程序进行设置,程序代码如下:#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]){ char szName1[10];
char szName2[4]; strcpy(szName1,"shenzhen");
printf("%s\n",szName1); //A
strcpy(szName2,"vckbase"); //B
printf("%s\n",szName1);
printf("%s\n",szName2); return 0;}
首先,我再程序标示的“A”行设置一个普通断点,点击F5(Go)开始调试,这时黄色箭头指向“A”行。
其次,我打开breakpoints对话框,在data选项卡下设置数据断点为“szName1”,设置好后点击确定按钮。
最后,我再次点击F5(Go)开始调试
问题是:正常应该是黄色箭头指向“B”行,表示在“B”行szName1的值改变了。可是我的程序却直接退出了调试状态,黄色箭头也没有了,为什么呢?
请回答的朋友先帮我实验一下再回答问题吧,谢谢了。
#include <string.h>
int main(int argc, char* argv[]){ char szName1[10];
char szName2[4]; strcpy(szName1,"shenzhen");
printf("%s\n",szName1); //A
strcpy(szName2,"vckbase"); //B
printf("%s\n",szName1);
printf("%s\n",szName2); return 0;}
首先,我再程序标示的“A”行设置一个普通断点,点击F5(Go)开始调试,这时黄色箭头指向“A”行。
其次,我打开breakpoints对话框,在data选项卡下设置数据断点为“szName1”,设置好后点击确定按钮。
最后,我再次点击F5(Go)开始调试
问题是:正常应该是黄色箭头指向“B”行,表示在“B”行szName1的值改变了。可是我的程序却直接退出了调试状态,黄色箭头也没有了,为什么呢?
请回答的朋友先帮我实验一下再回答问题吧,谢谢了。
溢出了吧
1)很可能你是Release模式编译了
2)在debug状态下,进入project setting-----link -----generate debug info是否选中??
就是为了验证数据断点的作用,才故意溢出,检查问题所在呀。
F9断点,
F10单步跟踪,
F11进入函数,
F5运行至断点处~
我说的是“数据断点”的调试方法,你那个方法不就是普通的单步调试吗?
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\Windows\SysWOW64\kernel32.dll', no matching symbolic information found.
Loaded 'C:\Windows\SysWOW64\KernelBase.dll', no matching symbolic information found.
The thread 0x474 has exited with code 0 (0x0).
The program 'F:\C程序\EX04\Debug\EX04.exe' has exited with code 0 (0x0).