vs2010中查看内存和寄存器

今天讲一下如何从VS2010中查看内存和寄存器状态,一般来讲,只要从事C/C++编程的人,基本上对于这篇文章完全可以略过了,但写这篇文章的初衷在于,自己也是从这一步中过来的,记得当年自己其实也不知道如何快速使用VS中各种工具,导致花了很多时间在查找资料上面。所以,本文基本上可以说是面向菜鸟级选手了。废话不多说,直接上菜。。。

一、查看寄存器

通常来说,在进行C或C++编程的时候,对于寄存器的查看还是不常用。但如果你在进行汇编代码编程,那么学会查看相关寄存器便显得非常重要,你可以从相关寄存器的值来确定各参数值是否有误,从而帮你快速检查代码。

如何查看寄存器?本文采用一个非常简单的程序进行演示,如下图1所示


图1

按下F5,全速运行到第12行处,此行代码显示的是调用一个进行简单加法的运算。

这里需要提及的是C/C++的函数调用约定,这是一个非常重要的概念,不懂的人一定要上网查看下win32下函数调用约定是什么意思,C/C++默认的调用约定是__cdecl,这种调用约定的其中一条是关于函数如何传参以及堆栈如何处理的问题,回到我们的例程,我们按下ALT+8进入反汇编,如下图2所示


图2

从上图我们可以看到,进入汇编代码后,我们按下ALT+5(也可到调试->窗口中看到),就可以看到寄存器窗口了,单步调试我们可以看到,程序首先将b送到寄存器EAX中,因此我们看到EAX的值变为2,然后把eax即b值压入堆栈中,同理,再把b送到ECX并压入堆栈(__cdecl调用约定规定传参从右至左依次压入堆栈),最后调用add函数,至于如何进入add调用下次再讲。这里我们就学会了查看寄存器了,至于其他寄存器变量分别代表什么意思,希望读者自己查阅相关资料,此处略去。

二、查看内存

查看内存是使用VS2010进行编码的一个非常基本的技能了,快速而准确地查看内存,可以帮助你准确分析代码中各变量的取值,以及存储状态,帮助你发现程序中的BUG,改进代码的健壮性。

如何查看内存?继续采用以上的例程进行说明,将程序F5到第13行,再单步到下一句


图3

按下ALT+6,此时我们可以看到内存1的窗口,我们从自动窗口中先找到指针p的地址,然后将地址复制到内存地址栏中,回车,即可看到此时地址中的值。内存窗口中左边的灰色值代表地址,右边则表示地址中存储的值。我们可以看到p地址对应的值为03,但后面还有000000跟着,其实因为我们存储的是一个整数值,需要4个字节存储,因此就算P中结果是3,也同样占用了4个字节。

这里还需要注意的一个概念是,大端法存储和小端法存储的概念。回到上面图中我们可以看出,内存地址从左至右,从上至下是依次增大的。我们这个值3其实正确的读法应该是从右至左读取的,即0x00000003,03是在最低位,而03也是存储在内存地址中的低地址中的,因此这是小端法存储,大端法则刚好相反。需要了解这方面更多信息的人,一定要上网查找更多资料多学习,本文就不再详述。

好了,以上就是本文的内容了,非常简单,有问题请留言。。。


### 回答1: 使用debug命令可以查看寄存器内存的内容。在debug命令行,可以使用命令“r”来查看寄存器的值,使用命令“d”来查看内存的内容。例如,输入“r”命令后,会显示当前CPU寄存器的值,包括AX、BX、CX、DX等。而输入“d”命令后,需要指定要查看内存地址,例如“d 100”表示查看内存地址为100的内容。通过这些命令,可以方便地进行调试和查看程序的运行状态。 ### 回答2: Debug命令是DOS操作系统的一个命令,它可以帮助程序员在程序出现问题时找出程序的错误所在,方便程序员修改程序。使用Debug命令可以查看寄存器内存的内容。 要查看寄存器的内容,需要先用Debug命令运行程序,然后在Debug命令的命令行界面输入“r”命令,即可查看当前寄存器保存的内容。常见的CPU寄存器有AX、BX、CX、DX等,它们都是16位的寄存器,可以通过Debug命令查看它们的值是否正确。 要查看内存的内容,可以使用Debug命令的“d”命令。在命令行界面输入“d 地址”即可查看该地址处的内容。例如,“d 100”命令可以查看内存地址100处的内容。这样可以帮助程序员查看程序在运行过程哪些内存地址被修改了、哪些内存地址未被释放等问题,有利于找到程序的错误所在。 需要注意的是,Debug命令是一种比较底层的调试工具,需要一定的编程和计算机基础才能使用。此外,在程序出现错误时,Debug命令只能帮助程序员找到错误的大致位置,还需进一步的分析和修改才能解决问题。因此,Debug命令通常是熟练的程序员使用的工具,对于新手来说可能会比较困难。 ### 回答3: debug是一个DOS下的命令行调试程序,它能够让我们查看、分析计算机程序的内部运行情况。在调试程序时,通常需要查看寄存器内存的内容,以便更好地理解程序的行为、找出可能的错误和优化程序的性能。 在进入debug命令行调试程序后,第一步通常是输入"r"命令,查看当前CPU寄存器各个寄存器的值。这些寄存器包括通用寄存器(AX、BX、CX、DX等)、段寄存器(CS、DS、ES、SS等)、指针寄存器(SP、BP、SI、DI等)等,它们的值可以帮助我们了解程序的执行过程,比如当前执行到哪个指令、程序使用的栈空间大小等。 除了寄存器,我们还可以通过debug命令查看内存的内容。要查看特定内存地址的内容,可以使用"u"命令("u"后面跟内存地址)。例如,输入"u 100"可以查看地址为100的内存单元的内容。除了使用"u"命令,我们还可以使用"e"命令(修改内存的内容)和"d"命令(批量查看内存的内容)等命令,来操作内存的内容。 在调试程序时,我们可以结合使用寄存器内存查看,来深入了解程序的执行情况和内存使用情况。例如,我们可以查看某个指针变量的值,然后再查看对应的内存数据,以确定指针是否指向正确的内存位置;还可以查看数据,以帮助我们找出程序出现崩溃的原因等。 总之,debug命令是一个非常有用的工具,它可以帮助我们深入了解计算机程序的执行情况,更好地进行调试和优化。但需要注意的是,debug命令只适用于DOS环境下的程序,不能用于Windows环境下的程序调试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值