码迷,mamicode.com
首页 > 其他好文 > 详细

VisualStudio调试

时间:2021-06-28 20:28:49      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:定位   play   选择   表示   文件的   程序   data   模块   影响   

  1. 对某一个变量感兴趣的话,在启动调试之后,直接对该变量“添加监视”,在调试窗口中即可看到该变量的变化;

  2. 查看指针指向的值

\[调试\to 窗口\to 内存\to 内存1 \]

拷贝指针的值,将指针的值复制到“内存1”的地址文本框中,显示的值默认为十六进制。

  1. 程序调试快捷键总结
  • Ctrl + F5直接运行程序,不调试

  • F5启动调试,在Debug模式下运行程序

  • F10单步跳过

  • F11单步进入

  • Shift + F11跳出

  • F9插入、移除断点

  • Shift + F5停止调试

  • Ctrl + Shift +F5重试调试

  1. “无法解析的外部符号”一般是要链接的外部函数查找失败导致的

  2. 新建项目的“控制台”/“桌面应用程序”区别在于“属性->链接器->所有选项->子系统”的不同选项。

#pragma onece
... // 声明、定义语句

等同于

#ifndef func
#def func
... // 声明、定义语句
#endif

后者ifndef受C/C++语言标准的支持,不受编译器的任何限制。

  1. 调试时,黄色箭头表示下一个将要执行的代码,可以移动黄色箭头控制执行顺序。

  2. 编译器有诸多的优化选项,DebugRelease实际是优化级别的区别。

  • Debug好,Release崩,检查是否有未初始化的变量,是否有数组越界

  • Release好,Debug崩,查找代码中的assert

  1. PDB文件的作用

PDB文件的全称是Program DataBase,用于存放Visual Studio(VS)编译链接时生成的文件。PDB文件主要存储了Visual Studio(VS)调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、栈指针、对应的行号等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成;在VS中可以进行设置,在Release版本中也可以生成PDB文件。

当提供了PDB文件之后,在输出的异常信息中,可以获取出错的文件、行号,便于定位错误,因此无论Debug还是Release都建议生成PDB文件(VS默认行为,区别在于Debug使用的开关为Debug: full,而Release使用的开关为Debug: pdbonly)

当选择full时,VS可以直接附加应用程序,而pdbonly时VS只能用于检查堆栈信息,如何确认pdb如何被调用?在“调试->窗口->模块”,有一列表示符号状态,如果显示符号已经加载(Symbols loaded)则表示pdb正在被VS使用。

  1. 仅我的代码Enable Just My Code

勾选“允许仅我的代码”(默认)则VS不会加载除了PDB之外的其它PDB,造成的直接影响是无法在调试信息中看到“除我的代码”之外的其它信息(如:在调用栈中仅能看到自己的代码),大部分情况下“仅我的代码”足矣。

  1. JIT优化

在Release模式下,当勾选“优化代码”,则意味着实际生成的代码和编写的代码会因为优化而不一致。这些优化一般是必须的,它使程序性能有所提升,但会增加调试难度,因为行号与实际运行的代码不匹配。可以通过在调试设置中勾选“在模块加载时取消JIT优化”来阻止代码优化。

VisualStudio调试

标签:定位   play   选择   表示   文件的   程序   data   模块   影响   

原文地址:https://www.cnblogs.com/mengnan/p/14942446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!