精华内容
下载资源
问答
  • VC6断点调试技巧

    2021-05-20 05:21:56
    在第一篇中,我们为大家介绍了如何用VC6进行断点调试,可以实现程序的分步执行。今天我们将继续深入,进行更多断点调试的学习。首先,写一个例子程序:#includeint fun(){printf("Welcome to C language Reserch ...

    在第一篇中,我们为大家介绍了如何用VC6进行断点调试,可以实现程序的分步执行。今天我们将继续深入,进行更多断点调试的学习。

    首先,写一个例子程序:

    #include

    int fun()

    {

    printf("Welcome to C language Reserch Center\n");

    return 0;

    }

    int main()

    {

    int i=0;

    int sum=0;

    fun();

    while(i++<100)

    {

    sum+=i;

    }

    printf("1+2+3+...+99+100 = %d\n",sum);

    return 0;

    }

    大家可以先行阅读以下程序,比较简单,调用一个自定义函数输出一句话,其二,计算1+2一直加到100的和并输出。

    然后,我们做练习,运用上节课的断点调试逐步跟我们这个程序。

    首先,我们在第一行int i=0;这里设置一个断点,运行它,如图:

    e185652272f5d4c4fb62888be22bec31.png

    注意看到,黑框里什么都没有输出,并且下方的变量监视里i的值还是垃圾值,因为还未执行这句话。

    然后我们F10下一步执行。但当大家执行到fun();函数调用这条语句时,编译器把它当成一句话来执行,并未进入函数内部,而是一步带过,如图:

    599c04f8af71849117c23723a1500ccb.png

    大家可自行上机实验,可以发现F10单步执行的单步是以一条C语言语句为单位的。鉴于这种情况,当我们怀疑fun函数时如何调试呢?

    除了可以在fun函数内部设置断点以外,我们还有一个办法,就是不按F10,而按F11,F11的意思是单步执行并介入,也就是说遇到单出的一句话就和F10没什么区别了,但如果是函数调用这种还能“进入”的语句,它就会逐层深入进去!大家能理解吗?

    那我们来试一试,重新开始,回到程序一开始的断点处,在黄色箭头指向到fun()时,按F11,大家注意观察!

    黄色的箭头会进入fun函数内部,如图:

    8f6c07ea98bee1a0e935f4b8806cf616.png

    然后可以逐步跟踪fun函数内部的语句了! 怎么样?试试吧

    当然,这里提示一下,对于我们想深入研究的函数我们可以F11介入一探究竟,但如果一直F11的话可能会一直深入程序底层可能按不出来哦!另外,对于printf这种库函数,如果还按F11的话,由于printf已经编译好,只能看到printf的汇编语句。所以大家还是根据情况按F10还是F11哦!

    由于大家在实际的开发工作当中,程序往往比我们的例子程序复杂很多,比如多个函数、嵌套、库函数调用等等,也有误进入函数内部,或者已经排查没有问题的,如果想尽早结束此函数退出回到上一层调用处,如何实现呢?答案是:按shift+F11,既可以跳出函数,返回到当前断点函数调用的下一步。

    好的,讲到这里,大家请自行实验,熟练掌握F10和F11以及shift+F11的混合使用!

    请大家亲自上机实验!

    以上

    C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明VC6断点调试技巧!

    展开全文
  • 在使用vc6.0(系统:windows 7 64 bit,Win10 64 bit)调试程序遇到终止调试时,程序无法退出的情况。由于无法直接关闭调试程序的进程,故而只能关闭vc6.0再打开该工程,十分繁琐! 问题来源: 引起这一问题的根源...

    详情描述:
    VC6.0发布于1998年,到文章发布的今天已经23年了,但由于他的绿色、小巧,我一直还在使用它。
    在使用vc6.0(系统:windows 7 64 bit,Win10 64 bit)调试程序时遇到终止调试时,程序无法退出的情况。由于无法直接关闭调试程序的进程,故而只能关闭vc6.0再打开该工程,甚至还需要杀掉某些进程!
    今天偶然搜索时才发现早就有解决方案了,2012年或是更早,可惜下载链接大都失效,只有百度经验里的链接还有效,就直接利用了,参考文档见下面。

    问题来源:

    引起这一问题的根源是2个DLL,DM.DLL(6.0.8168.0)和TLLOC.DLL(6.0.8168.0)。这是在安装完VC6对应的版本号,当你更新了sp6补丁后DM.DLL的版本就更新成6.0.9782.0,但TLLOC.DLL确没有更新,所以导致这一问题的出现。

    解决办法:
    在VC6.0安装目录下的 Common/MSDev98/Bin 里有两个dll文件:DM.dll 和 TLLOC.dll。
    将DM.dll替换成6.0.9782.0版本的或更新,将TLLOC.dll替换成6.00.8168.292版本。

    TLLOC.DLL下载地址: https://pan.baidu.com/s/1slezuup 密码: 6vkq

    参考文档:
    CrkAsMa的百度经验
    Fly-Skyline的csdn文章

    如果百度盘失效,可联系我补发,亲测有效

    展开全文
  • 本文主要向大家介绍了VC编程:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。在使用VS开发,有时断点会无法进入,特别是在一个项目中引用另...

    本文主要向大家介绍了VC编程:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

    在使用VS开发时,有时断点会无法进入,特别是在一个项目中引用另一个类库项目时。如下图。

    我在一个项目中引用了自定义的控件MyControl类库,但在使用时发现,有些地方还需要调整,比如这里我需要增加一个GUID作为特殊标识,并输出以供测试。但是当我将这段代码加入进去后,按F5运行程序时,这段代码的断点没有如预期的进入。

    注:无法进入的断点是空心的,可以进入的断点是实心的。

    于是将鼠标定位到了断点的位置,提示如上图。会发现这是因为源代码与原始版本不同造成的。这时我们可以按照提示中所说的方法来解决试试。

    解决方法1:右击断点->位置->允许源代码与原始版本不同vc3Ryb25nPjxzdHJvbmc+oaPI58/Czbw8L3N0cm9uZz48L3A+CjxwPijXotLi0qrU2rfH1MvQ0Ne0zKzPwtPSu/e2z7Xjo6yyu8i7u+HO3reouPzQwrT6wuspPGJyPgo8L3A+CjxwPjxicj4KPC9wPgo8cD48aW1nIHNyYz0="https://www.2cto.com/uploadfile/Collfiles/20140123/2014012308574675.jpg" alt="\">

    但是在实际运行时会发现,此方法并不一定靠谱,因为调试时断点自动往下跳了。这样一来,断点同样会无法进入。

    解决方法2:工具->选项->调试->常规->禁用要求源文件与原始版本完全匹配。如下图

    这时再运行,断点已经可以正常进入了。

    解决方法3:重新生成解决方案或者先清理解决方案再生成解决方案

    这时再运行,断点也可以正常进入。

    那么为什么会造成这种情况呢?这时因为调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。

    再有前面提到,有时断点会跳到其他的位置,是因为断点是定位在代码的行上的,而PDB文件中记录了代码的行数,但是PDB文件却没有更新,所以当我们强行将断点处的代码设置"允许源代码与原始版本不同"时,如果依旧使用上一次的PDB文件,自然断点的行数就定位到了上次记录的代码行数,所以断点就会往后跳了。

    关于PDB的说明可以参看该文https://www.codeproject.com/Articles/349076/Know-Program-Database-file-PDB

    本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

    展开全文
  • vc6串口调试助手源码

    2021-05-20 03:41:53
    (如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了), 这时在ClassView视窗中就可以看到CMSComm类了,...

    1.建立项目:

    打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);

    2.在项目中插入MSComm控件

    选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,单击Insert按钮将它插入到我们的Project中来,(若插不进去,将, version 6.0及后缀删除)接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),

    这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。

    3.利用ClassWizard定义CMSComm类控制对象

    打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。

    4.在对话框中添加控件

    向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的Properties->Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。

    再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类, 为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。

    5.添加串口事件消息处理函数OnComm()

    打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。

    这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:(注意编程规范)

    void CSCommTestDlg::OnComm()

    {

    // TODO: Add your control notification handler code here

    VARIANT variant_inp;

    COleSafeArray safearray_inp;

    LONG len,k;

    BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.

    CString strtemp;

    if (m_ctrlComm.GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符

    {

    以下你可以根据自己的通信协议加入处理代码

    variant_inp = m_ctrlComm.GetInput(); //读缓冲区

    safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量

    len = safearray_inp.GetOneDimSize(); //得到有效数据长度

    for(k = 0;k < len;k++)

    {

    safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组

    }

    for(k = 0;k < len;k++) //将数组转换为Cstring型变量

    {

    BYTE bt = *(char*)(rxdata+k); //字符型

    strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

    m_strRXData += strtemp; //加入接收编辑框对应字符串

    }

    }

    UpdateData(FALSE); //更新编辑框内容 (主要是接收编辑框中的)

    }

    到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口,但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一行的,运行试试。没错吧?那么做下一步:

    6.打开串口和设置串口参数

    你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的CSCommTestDlg::OnInitDialog()打开串口,加入如下代码:

    // TODO: Add extra initialization here

    if (m_ctrlComm.GetPortOpen())

    {

    m_ctrlComm.SetPortOpen(FALSE);

    }

    m_ctrlComm.SetCommPort(4); //选择com4 我用的是笔记本 用了个USB转串口的,所以是端口4

    if ( !m_ctrlComm.GetPortOpen())

    {

    m_ctrlComm.SetPortOpen(TRUE);//打开串口

    }

    else

    {

    AfxMessageBox("cannot open serial port");

    }

    m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位

    m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据

    //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

    m_ctrlComm.SetRThreshold(1);

    m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0

    m_ctrlComm.GetInput(); //先预读缓冲区以清除残留数据

    7.发送数据

    先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_BUTTON_MANUALSEND,双击BN_CLICKED添加OnButtonManualsend()函数,并在函数中添加如下代码:

    //此函数实现的就是串口的发送数据

    void CSCommTestDlg::OnButtonManualsend()

    {

    // TODO: Add your control notification handler code here

    UpdateData(TRUE); //读取编辑框内容

    m_ctrlComm.SetOutput(COleVariant(m_strTXData)); //发送数据

    }

    运行程序,在发送编辑框中随意输入点什么,单击发送按钮,啊!看看,在和本机电脑用串口相连的另一电脑的串口调试助手接收框里就出现了所发送的数据。当然也可以接收另外一台电脑发送过来的数据。这是在前面的CSCommTestDlg::OnComm() 函数里头实现的。

    8.发送十六进制字符

    在主对话框中加入一个复选接钮,ID为IDC_CHECK_HEXSEND Caption: 十六进制发送,再利用ClassWizard为其添加控制变量:m_ctrlHexSend;

    在ClassView中为SCommTestDlg类添加以下两个PUBLIC成员函数,并输入相应代码;

    //由于这个转换函数的格式限制,在发送框中的十六制字符应该每两个字符之间插入一个空隔

    //如:A1 23 45 0B 00 29

    //CByteArray是一个动态字节数组,可参看MSDN帮助

    //由于这个转换函数的格式限制,在发送框中的十六制字符应该每两个字符之间插入一个空隔

    //如:A1 23 45 0B 00 29

    //CByteArray是一个动态字节数组,可参看MSDN帮助

    int CSCommTestDlg::String2Hex(CString str, CByteArray &senddata)

    {

    int hexdata,lowhexdata;

    int hexdatalen = 0;

    int len = str.GetLength();

    senddata.SetSize(len / 2);

    for(int i = 0;i < len;)

    {

    char lstr,hstr = str[i];

    if(hstr == ' ')

    {

    i++;

    continue;

    }

    i++;

    if(i >= len)

    break;

    lstr = str[i];

    hexdata = ConvertHexChar(hstr);

    lowhexdata = ConvertHexChar(lstr);

    if((hexdata == 16) || (lowhexdata == 16))

    break;

    else

    hexdata=hexdata*16+lowhexdata;

    i++;

    senddata[hexdatalen]=(char)hexdata;

    hexdatalen++;

    }

    senddata.SetSize(hexdatalen);

    return hexdatalen;

    }

    //这是一个将字符转换为相应的十六进制值的函数

    //好多C语言书上都可以找到

    //功能:若是在0-F之间的字符,则转换为相应的十六进制字符,否则返回-1

    char CSCommTestDlg::ConvertHexChar(char ch)

    {

    if ((ch>='0')&&(ch<='9'))

    {

    return ch-0x30;

    }

    else if ((ch>='A')&&(ch<='F'))

    {

    return ch-'A'+10;

    }

    else if ((ch>='a')&&(ch<='f'))

    {

    return ch-'a'+10;

    }

    else

    return (-1);

    }

    再将CSCommTestDlg::OnButtonManualsend()修改成以下形式:

    void CSCommTestDlg::OnButtonManualsend()

    {

    // TODO: Add your control notification handler code here

    UpdateData(TRUE); //读取编辑框内容

    if(m_ctrlHexSend.GetCheck())

    {

    CByteArray hexdata;

    int len=String2Hex(m_strTXData,hexdata); //此处返回的len可以用于 计算发送了多少个十六进制数

    m_ctrlComm.SetOutput(COleVariant(hexdata)); //发送十六进制数据

    }

    else

    m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送ASCII字符数据

    }

    现在,你先将串口线接好并打开串口调试助手V2.1,选上以十六制显示,设置好相应串口,然后运行我们这个程序,在发送框中输入00 01 02 03 A1 CC等十六进制字符,并选上以十六进制发送,单击手动发送,在串口调试助手的接收框中应该可以看到00 01 02 03 A1 CC了。

    9.在接收框中以十六进制显示

    这就容易多了: 在主对话框中加入一个复选接钮,IDC_CHECK_HEXDISPLAY Caption: 十六进制显示,再利用ClassWizard为其添加控制变量:m_ctrlHexDiaplay。 然后修改CSCommTestDlg::OnComm()函数:

    BYTE bt=*(char*)(rxdata+k); //字符型

    在OnComm()函数这条语句的后面加入如下代码:

    if(m_ctrlHexDisplay.GetCheck())

    strtemp.Format("X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔

    else

    strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

    测试:在串口调试助手发送框中输入00 01 02 03 A1 CC等十六进制字符,并选上以十六进制发送,单击手动发送,在本程序运行后选上以十六进制显示,在串口调试助手中单击手动发送或自动发送,则在本程序的接收框中应该可以看到00 01 02 03 A1 CC了。

    10.如何设置自动发送

    最简单的设定自动发送周期是用SetTimer()函数,这在数据采集中很有用,在控制中指令的传送也可能用到定时发送。

    方法是:在ClassWizard中选上MessageMap卡,然后在Objects IDs选中CSCommTestDlg类,再在Messages框中选上WM_TIMER消息,单击ADD_FUNCTION加入void CSCommTestDlg::OnTimer(UINT nIDEvent) 函数,这个函数是放入“时间到”后要处理的代码:

    void CSCommTestDlg::OnTimer(UINT nIDEvent)

    {

    // TODO: Add your message handler code here and/or call default

    OnButtonManualsend();

    CDialog::OnTimer(nIDEvent);

    }

    再在在主对话框中加入一个复选接钮,ID为IDC_CHECK_AUTOSEND Caption: 自动发送(周期1秒),再利用ClassWizard为其添加BN_CLICK消息处理函数void CSCommTestDlg::OnCheckAutosend():

    void CSCommTestDlg::OnCheckAutosend()

    {

    // TODO: Add your control notification handler code here

    m_bAutoSend=!m_bAutoSend;

    if(m_bAutoSend)

    {

    SetTimer(1,1000,NULL);//时间为1000毫秒

    }

    else

    {

    KillTimer(1); //取消定时

    }

    }

    其中:m_bAutoSend为BOOL型变量,在CLASSVIEW中为CSCommTestDlg类加入,并在构造函数中初始化:

    m_bAutoSen=FALSE;

    现在可以运行程序测试了。

    11.什么是VARIANT数据类型?如何使用VARIANT数据类型?

    不知如何使用VARIANT数据类型, 有不少朋友对VARIANT这个新的数据类型大感头疼。SetOutput()函数中 需要的VARIANT参数还可以使用COleVariant类的构造函数简单生成,现在GetInput()函数的返回值也成了VARIANT类型,那么如何从返回的值中提取有用的内容。 VARIANT及由之而派生出的COleVariant类主要用于在OLE自动化中传递数据。实际上VARIANT也只不过是一个新定义的结构罢了,它的主要成员包括一个联合体及一个变量。该联合体由各种类型的数据成员构成, 而该变量则用来指明联合体中目前起作用的数据类型。我们所关心的接收到的数据就存储在该联合体的某个数据成员中。 该联合体中包含的数据类型很多,从一些简单的变量到非常复杂的数组和指针。由于通过串口接收到的内容常常是一个字节串,我们将使用其中的某个数组或指针来访问接收到的数据。这里推荐给大家的是指向一个SAFEARRAY(COleSafeArray)类型变量。新的数据类型SAFEARRAY正如其名字一样,是一个“安全数组”,它能根据系统环境自动调整其16位或32 位的定义,并且不会被OLE改变(某些类型如BSTR在16位或32位应用程序间传递时会被OLE翻译从而破坏其中的二进制数据)。大家无须了解SAFEARRAY的具体定义,只要知道它是另外一个结构,其中包含一个 (void *)类型的指针pvData,其指向的内存就是存放有用数据的地方。 简而言之,从GetInput()函数返回的VARIANT类型变量中,找出parray 指针,再从该指针指向的SAFEARRAY变量中找出pvData指针,就可以向访问数组一样取得所接收到的数据了。具体应用请参见void CSCommTestDlg::OnComm()函数。

    展开全文
  • 上两讲中,为大家介绍到了VC6编译器的断点调试技巧,教给大家如何设置\取消断点、单步和跟踪一个程序。让大家具备基本的调试一个程序的能力。今天我们将继续深入研究教大家如何更细致、深入的跟踪和分析一个C程序。...
  • VC6.0无法进入调试

    2021-11-16 17:31:09
    VC6.0无法进入调试确认编译是debug版本,各种调试信息都开了还是无法进入debug 确认编译是debug版本,各种调试信息都开了还是无法进入debug 怕不是点了这里------>这里是ctrl+F5
  • 前言:看到不少同学在学习过程中总会碰到各种与自己期望不符的结果而不知所措,如运行结果不对,程序运行崩溃、...本文将带领大家以VC6编译器为例,学习如何断点分析和调试我们的C程序,让大家具备基本的断点调试能...
  • 2 编写结构良好的代码 当程序崩溃所能得到的最基本的调试信息是源代码文件、问题所在行的行号和一个调用栈(call stack)。调用栈是调试程序最有帮助的部分,它提供错误出现的上下文,也就是带参数的函数调用...
  • 1. 在编辑状态下发现成员变量或函数不能显示提示是如何打开显示功能这似乎是目前这...如何将一个通过ClassWizard生成的类彻底删除首先在工作区的FileView中选中该类的.h和.cpp文件,按delete删除,然后在文件管理器...
  • 调试工作原理: 被调试进程注册后,每当被调试进程发生调试事件(DebugEvent),OS就会暂停进程执行,并汇报给调试器,当调试器处理完相关事件后,使被调试程序继续执行。 一张图说明调试器的异常处理...
  • 偶尔会需要调试的时候进入MFC的代码中。在VC中(以VS2013为例)需要以下两个步骤即可跟踪进入。 1、如下图: 2、如下图: 第一步关键,因为系统是默认在共享Dll中使用MFC。第二步容易被忽略,这样会导致莫名的编译...
  • 但是在写单片机程序,会出现一些问题,就需要程序的调试技术。在图书馆借了一本书《c语言程序设计实验教程》(西工大出版社),再结合网上一些网友的博文,在这里对vc6.0的程序调试技术简单梳理一下。现代程序调试的...
  • 不管是程序员还是计算机小白,在写一些代码,由于粗心大意,或者其他原因不时会碰到BUG 那么什么是BUG? BUG:调试,又称除错,在这里其实发现和减少计算机的程序出错的过程。 为什么调试 有人说:“每一次调试...
  • VC++6.0中如何编译运行调试 C语言程序1. 启动VC++6.0 (如下图)2. 单个源文件的编译运行例如下面的源代码#includevoid main(){ int i,sum=0;for(i=1;i<=10;i++){sum=sum+i;}printf("sum=%d\n",sum);}打开 VC++6.0 ...
  • 这里把调试信息格式设置为无,就打不了断点了
  • (调试此Demo需要将目录里的mydb子目录拷到MySQL安装目录的data子目录下(我的是:D:\Program Files\MySQL\MySQL Server 5.0\data)摘要:本文详细阐述了如何进行MySQL的安装、调试,以及如何用VC进行编译,实现数据的...
  • 在前几讲中,在讲解了断点的基本用法后,给大家介绍了简单的关于变量监视的技术,包括运行中的局部变量监视,也...比如我们在学习字符串函数strcoy,很多同学不明白函数的的”覆盖”效果,我们则可以通过内存监...
  • 调试技巧 1、VC++中F5进行调试运行 a)、在output Debug窗口中可以看到用TRACE打印的信息 b)、 Call Stack窗口中能看到程序的调用堆栈 2、当Debug版本运行发生崩溃,选择retry进行调试,通过看Call Stack分析出错...
  • 在我们开发dll文件用visual studio,而界面程序用别的Ide,入c++ builder,如何在调试时启动界面程序呢: 1.将开发好的界面程序(xxx.exe)放到dll文件的输出目录,比如在bin\x64\,这个可在 项目->属性->...
  • VC2010 运行闪退

    2021-02-12 19:27:25
    绿色的三角形运行按钮,Ctrl+F5才是调试。 Ctrl+F5即可正常调试,不会闪退。
  • 由于VC6.0这个编译环境比较老了,但是有好多老项目是用的,而且vc6转高版本,05,08,10,会有多多少少大大小小的问题。 比如VC6.0是可以这样写的 #define MAX_INDEX_NUM 10 VOID CSDN::Function() { for(int i=0...
  • 问题描述:在Win10系统中运行VC6,按F10、F11进行单步调试,会出现:Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation的错误,即无法进行单步调试。 解决过程:网上搜索资料。 最终解决...
  • 有时调试时需要进行文件的读取写入操作,使用相对路径会比较方便。 读取chair.obj 应该将该obj放到默认是vs工程所在目录即.vcproj文件所在目录 将obj文件放在该目录即可进行直接读取操作 string FileName = ...
  • 11 一、如何使用DebugView.exe 打印调试信息: 捕捉Release模式的Win32程序输出的调试信息,请选中...支持Debug、Release模式编译的程序(即该软件捕获的是exe直接运行,抛出的信息,而不是Visual Studio调
  • Technorati 标签:C语言,程序设计,VC,调试,程序,视频,讲座,断点主要讲述如何使用VC6调试程序。其中包含以下内容:1 设置断点2 逐语句执行程序3 观察变量或表达式的值步骤如下:1 新建程序2 编译,运行程序3 设置断点4...
  • vs2015 调试时打开控制台

    千次阅读 2021-02-04 15:49:51
    打开项目属性->通用属性->链接器->系统->子系统,在其中选择即可切换。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,759
精华内容 31,103
关键字:

vc调试时的工作目录