熟悉visual c环境及程序调试方法,visual c++调试应用程序的方法

  熟悉visual c环境及程序调试方法,visual c++调试应用程序的方法

  可视化开发工具和调试技巧:我一直用VC平台开发东西,但有时候总会出现这样那样的问题。呵呵,总是需要在网上查资料来解决。在这里,我想把我以前在网上查过的一些技巧摘录如下,希望对你有用,省去了你再次查找的麻烦。1.如何调试在发布状态Project- Setting=ProjectSetting对话框中,选择发布状态。在“C/C”选项卡中,为“类别”选择“常规”,为“优化”选择“禁用”(调试),为“首次亮相信息”选择“程序数据库”。在“链接”选项卡中选择“生成调试信息”复选框。注意:这只是调试和发布之间的中间状态。所有断言和验证都不起作用。函数调用方法不用查表就已经是真正的调用了。但是,在这种状态下,QuickWatch和呼叫队列跟踪功能仍然有效,就像调试版本一样。2.发布和调试有什么区别?发布版叫发布版,调试版叫调试版。Debug可以执行单步执行、跟踪等功能,但是生成的可执行文件比较大,代码运行比较慢。发布版本运行速度更快,可执行文件更小,但不能在其编译条件下执行调试。Release exe文件链接到标准MFC dll(在共享或静态dll中使用MFC)。这些dll是在安装Windows时配置的,因此这些程序可以在没有安装Visual C 6.0的计算机上运行。exe的调试版本是链接到MFC DLL文件的调试版本的,所以它不能在没有安装Visual C 6.0的机器上运行,因为相应的DLL丢失了,除非你选择链接时使用静态DLL。3.断言和验证有什么区别?Assert中的内容在Release版本中不编译,VERIFY中的内容仍然翻译,但不再是true或false。所以后者更安全。例如断言(文件。Open(strFileName))。一旦到了发布版本,这一行就被忽略了,文件根本没有打开(),也没有错误消息。如果使用VERIFY(),就不会有这个问题。4.工作空间和项目之间的关系是什么?每个工作空间可以包括几个项目,但是其中只有一个是活动的,并且它们之间可以有依赖关系,这可以在设置中设置.的项目。例如,活动项目可以依赖于提供其函数调用的其他静态库。5.如何在非MFC程序中使用ClassWizard创建空的?RC文件,然后将其添加到项目中。6.如何设置断点按F9在当前光标处添加断点和取消断点。另外,在编辑状态下,按Ctrl B弹出断点设置对话框。然后点击【条件…】按钮,弹出断点条件设置对话框。7.当发现成员变量或函数在编辑状态下无法显示时,提示如何打开显示功能。这似乎是当前版本Visual C 6.0的一个bug。按照步骤做就可以正常了。如果再次出现,可以做同样的事情:(1)关闭项目;(2)删除“项目名称。ncb”文件;(3)重新打开项目;8.如何完全删除一个由ClassWizard生成的类?首先,选择。h和。工作区的FileView中该类的cpp文件,按Delete删除,然后在文件管理器中删除,再运行ClassWizard。此时,系统会提示您是否删除该课程。9.如何找出workspace中消失的类,打开该类对应的头文件,然后随便更改其类名。这时工作区会出现一个新的类,然后把这个类改回原来的名字。10.如何清除所有断点菜单【编辑】-【断点… …】,打开“断点”对话框,点击【全部清除】按钮。快捷键是“Ctrl+Shift+F8”。1.如何在ClassWizard中选择未列出的信息打开“ClassWizard”对话框,然后切换到“Class Info”页面。更改“消息过滤器”,如选择“窗口”,窗口的信息会出现在“消息”页面。12.如何检测程序中的括号是否匹配?将光标移动到要检测的括号前,按快捷键“Ctrl”。

  如果括号匹配正确,光标将跳转到匹配的括号,否则,光标不会移动,机箱喇叭将发出警告。13.如何查看一个宏(或变量、函数)的定义?将光标移动到要查看的宏。例如,在最常见的DECLARE_MAP_MESSAGE上按F12(或右键菜单中的相关菜单)。如果没有建立浏览文件,会出现提示对话框。按[OK]按钮,然后你将跳转到定义宏(或变量,函数)的地方。14.如何在当前项目中添加Lib文件?单击菜单[项目]-[设置…],弹出“项目设置”对话框,切换到“链接”选项卡,在“对象/库模块”中输入Lib文件的名称。不同的库由空格分隔。15.如何快速删除一个项目下Debug文件夹中的临时文件?在工作区的FileView视图中选择相应的项目,右键弹出菜单,选择[Clean(仅选择)]菜单。16.如何快速生成一个除项目名称外与现有项目完全相同的新项目?在新项目的“新建”对话框中选择“自定义Appwizard”项,输入新项目的名称,然后单击[确定]按钮。出现“自定义应用程序向导”项,输入新项目的名称,然后单击[确定]。出现“自定义应用程序向导-第1步,共2步”对话框,选择“现有项目”项,然后单击[下一步]按钮。出现“自定义应用程序向导-第2步,共2步”对话框,选择现有项目的项目文件名,最后单击[完成]按钮。编译后,将生成一个与现有项目相同但可以重命名的项目AppWizard。现在,您可以像使用MFC AppWizard一样使用这个自定义向导了。如果您不想再使用它,可以删除。awx和。Visual C 6.0安装目录下的Common/MSDev98/Template目录中与该向导对应的pdb文件。17.如何解决Visual C 6.0连接不正确的问题?场景:一个文件明显改变了,但是整个项目都要重新编译,重新链接。链接刚刚好。一旦它运行,你将被提示重新编译链接。这是因为未来文件的出现(修改时间和创建时间晚于系统时间)。可以这样做:在项目文件夹中找到调试目录,删除所有创建和修改时间比系统时间长的文件,然后再次“全部重建”。18.导致LNK2001的常见错误有哪些?遇到的LNK2001错误主要是:未解析的外部符号“symbol”。如果链接器在所有库和目标文件中找不到引用的函数、变量或标签,将生成此错误信息。一般来说,错误的原因有两个:一是引用的函数和变量不存在,拼写错误或使用错误;其次,可以使用不同版本的链接库。以下是导致LNK2001错误的可能原因:1编码错误导致的LNK2001错误(1)不匹配的程序代码或模块定义(。def)文件导致LNK2001。例如,如果在C的源文件中声明了一个变量“var1 ”,但您试图访问另一个文件中的变量“var1”。(2)如果使用的内联函数是在。cpp文件而不是头文件,这将导致LNK2001错误。(3)调用函数时,如果使用的参数类型与head函数声明的类型不匹配,会产生LNK2001错误。(4)试图从基类的构造函数或析构函数调用虚函数将导致LNK2001错误。(5)注意函数和变量的共性。只有全局变量和函数可以共享。静态函数和静态变量在使用范围上有相同的限制。试图从文件外部定位任何未在文件中声明的静态变量将导致编译错误或LNK2001错误。2编译和联机设置导致的LNK2001错误(1)如果编译时使用//NOD(/NODERAULTLIB)选项,将获得程序所需的运行时和MFC,编译器将写入目标文件模块,但这些库不会链接到项目文件中,除非文件中显式包含这些库名。

  在这种情况下,使用/NOD将导致LNK2001错误(2)如果没有为wWinMainCRTStartup设置程序条目,则在使用Unicode和MFC时,将出现LNK2001错误消息“Unresolved external on _ winmain @ 16”。(3)用/MD选项编译时,由于所有运行时库都保存在动态链接库中,所以源文件中对“func”的引用就是目标文件中对“__imp__func”的引用。如果您尝试使用静态库LIBC进行链接。LIB或LIBCMT。LIB,LNK2001错误将出现在__imp__func上。如果不使用/MD选项进行编译,则在使用MSVCxx时也会出现LNK2001错误。LIB链接。(4)用/ML选项编译时,如果用LIBCMT链接。LIB,在_errno上将出现LNK2001错误。(5)编译被调试的应用程序时,如果使用release模态库进行链接,也会出现LNK2001错误;类似地,当使用调试模式库链接分发应用程序时,也会出现同样的错误。(6)混合使用不同版本的库和编译器也会导致问题,因为新版本的库可能包含早期版本没有的符号和描述。(7)在不同的模块中使用内联和非内联编译选项会导致LNK2001错误。如果在创建C库时打开了函数内联(/Ob1或/Ob2),但在描述该函数的相应头文件中关闭了函数内联(没有inline关键字),则只会得到一条错误消息。为了避免这个问题,内联函数应该在相应的头文件中用inline关键字标记。(8)不正确的/子系统或入口设置也会导致LNK2001错误。19.如何在没有源代码的情况下调试exe文件调用的dll?在Visual C 6.0中,进入“项目设置”对话框,选择“调试”选项卡。通常Visual Studio将“调试会话的可执行文件”默认为可执行文件的名称,但是您可以根据需要将其更改为任何程序。您甚至可以指定不同的工作目录,并向您的程序传递参数。这项技术通常用于调试dll、命名空间扩展、COM对象和从一些exe和第三方exe调用的其他插件程序。20.Visual C6.0 project中的所有项目文件代表什么?opt:项目关于开发环境的参数文件。例如工具栏位置。aps(AppStudio File)资源辅助文件,二进制格式,一般不用担心。clw:ClassWizard信息文件,它实际上是一种INI文件格式。有兴趣可以研究一下。有时ClassWizard会有问题,可以通过手动修改CLW文件来解决。如果该文件不存在,每次使用ClassWizard时都会提示您重新构建它。dsp(DevelopStudio Project):项目文件,文本格式,但不熟悉的不要手动修改。dsw(DevelopStudio Workspace):它是一个工作区文件,其他功能与。dsp。plg:是编译信息文件,编译时的错误和警告信息文件(其实是一个html文件),一般用处不大。点击菜单【工具】-【选项】打开对话框,有一个选项控制这个文件的生成。hpj(帮助项目):生成帮助文件的项目,可以由微软帮助编译器处理。mdp(Microsoft DevStudio项目):它是项目文件的旧版本。如果要打开该文件,将提示您是否将其转换为新的。dsp格式。bsc:用于浏览项目信息。如果您使用源代码浏览器,您必须有这个文件。如果不使用这个函数,可以在项目选项中删除生成浏览信息文件,这样会加快编译速度。map是可执行文件的图像信息记录文件,一般不需要,除非在系统底层。pch(预编译文件):它用,编译文件,可以加快编译速度,但是文件很大。pdb(程序数据库):记录一些与程序相关的数据和调试信息,可能在调试中有用。exp:它只会在编译DLL时生成。它记录了DLL文件的一些信息,一般没用。ncb:没有编译浏览器。当自动完成功能出现问题时,您可以删除此文件。它将在项目编译后自动生成。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: