文章目录

一、常规断点调试

  • F9:光标到某一行,按F9可以给该行设置断点,或者取消断点;
  • F5:执行程序到第一个断点停下;
  • F10:逐过程,一行行执行,但是函数那些算一块执行;
  • F11:逐语句,可进入函数一行行执行;
  • Shift + F11:可跳出当前的函数

二、调试时查看内存

一个很简单的指针常量栗子:

#include <iostream>
using namespace std;
int main(){
int a = 3;
int m[2] = { 1, 2 };
int *const c = &a;//指针常量
cout << "c的(值):" << c << " " << "c指针指向的值:" << *c << endl;
c[0]=m[0];//改变地址的内容是合法的
cout << "c的(值):" << c << " " << "c指针指向的值:" << *c << endl;
system("pause");
}

用F9在第七行设置断点后,按F5运行,执行到断点处(该行还没执行),按​​Alt + 6​​或者选择:调试,窗口,内存,内存1 的命令就能查看内存:

Visual studio调试的快捷键_c++


在左上角的“地址”右边的编辑框中输入​​& + 想查看的变量​​​就能查看该变量的地址存放的值,即该变量的值,这里我们输入​​&m​​后得到:

Visual studio调试的快捷键_指针常量_02

  • 上面显示的​​0x00AFFD5C​​​即这个​​m​​数组的首地址,分成3部分:
  • 左侧部分是​​m​​的地址和附近的内存地址;
  • 中间部分是该内存中存放的数(PS:但是是以十六进制进行保存,即VS将这些二进制数据以16进制保存,4位二进制表示一位16进制数);
  • 右侧部分是内存中16进制数所代表的一些字符,有些可显示字符会显示出来,对于不可显示的字符就用​​.​​来代替。

比如如下程序​​safasdfa\0def​​的内存,a对应的16进制数为61(十六进制的61即十进制的97,即a字符对应的ASCII码),s对应的是73:

= "safasdfa\0def";
cout << str << endl;

Visual studio调试的快捷键_指针常量_03

三、快速监视窗口

shift + F9:当程序运行到断点处,按这个键能出现快速监视窗口,如下所示,查看​​m​​对应的值和类型:

Visual studio调试的快捷键_visual studio_04


如果查看​​a​​的值:

Visual studio调试的快捷键_断点调试_05


查看​​a​​​的地址,输入​​&a​​:

Visual studio调试的快捷键_16进制_06