为了学习“数据断点”的设置和使用,我根据参考资料上的一个程序进行设置,程序代码如下:#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的值改变了。可是我的程序却直接退出了调试状态,黄色箭头也没有了,为什么呢?
请回答的朋友先帮我实验一下再回答问题吧,谢谢了。

解决方案 »

  1.   

    strcpy(szName2,"vckbase");   
     
    溢出了吧
      

  2.   

    有可能的原因:
    1)很可能你是Release模式编译了
    2)在debug状态下,进入project setting-----link -----generate debug info是否选中??
      

  3.   

    to:VisualEleven
       就是为了验证数据断点的作用,才故意溢出,检查问题所在呀。
      

  4.   

    在debug模式下
    F9断点,
    F10单步跟踪,
    F11进入函数,
    F5运行至断点处~
      

  5.   

    to:dizuo
        我说的是“数据断点”的调试方法,你那个方法不就是普通的单步调试吗?
      

  6.   

    to:hotpos你说的区段是什么?在哪填写?有什么用?我应该填什么?
      

  7.   

    to:hotpos我大概了解您说的意思了,但我还是不知道在哪设置区段的值,请详细说明,谢谢了。
      

  8.   

    to:hotpos我知道在哪填区段了。问题是当我把数组名作为数据断点时,区段填10,还是无法得到调试结果呀?请问和VC的版本有关吗?
      

  9.   

    to:hotpos写地址也不行呀,在调试区总是出现一大串信息如下:
    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).