VS调试查看寄存器学习总结

165 篇文章 18 订阅

vs2008 调试时如何查看寄存器内容


调试菜单里没找到。

怎么调出来?

谢谢。

debug→windows→registers

在调试状态,然后主菜单的调试->窗口->寄存器 
或者按快键ALT+5 

先下断点,然后按F5或者点击Debug->Start Debuging程序停在断点处。
然后点击按钮 Debug->Windows->DisAssambly

中文版是:菜单“调试 > 窗口 > 反汇编 
接着按Ctrl+Alt+D组合键打开反汇编窗口
========

在VS中调试C#程序,如何查看内存、寄存器、反汇编

http://blog.csdn.net/judyge/article/details/41315947

想查看反汇编代码,可在代码窗口中点右键->选择“转到反汇编”即可。在汇编代码窗口中,可以按F11来单步执行,以便更精确地跟踪代码的执行。

若想同时查看寄存器的变化情况,可以点击VS中的“调试”->“窗口”->“寄存器”菜单项。(需在调试过程中才会显示有此菜单项,如,程序执行到了断点而暂停时。如果在调试状态还是没有此菜单项,可试着以下操作:在VS中点击“工具”->“导入和导出设置”,选择“重置所有设置”,下一步,这时你可以保存当前设置或不保存,我觉得无所谓,下一步,选择“Visual C#开发设置”,“完成”。这样,“调试”->“窗口”->“寄存器”菜单项应该用显示出来了,记得要确保你的程序是在调试的过程中。)

关于查看内存,点击“调试”->“窗口”->“内存”->“内存1”...“内存4”(选一个就可以了。)。在内存窗口中的“地址”栏输入地址,按回车即可看到该地地址处的内存信息。
========

vs2010中查看内存和寄存器

http://blog.csdn.net/shuiniu1224/article/details/21997221

今天讲一下如何从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也是存储在内存地址中的低地址中的,因此这是小端法存储,大端法则刚好相反。需要了解这方面更多信息的人,一定要上网查找更多资料多学习,本文就不再详述。
好了,以上就是本文的内容了,非常简单,有问题请留言。。。
========

VS看反汇编、寄存器、内存、堆栈调用来学习程序设计

http://blog.csdn.net/dinghqalex/article/details/43151143

       其实计算机这套东西是真的太大了,太多的东西要学要理解更要掌握。学习的时候要不断拆分理解才能掌握得更牢固,学程序的时候可以通过查看程序的运行过程进而加深自己对程序设计的理解,调试出最优化的代码。
       VisualStudio,微软的高端IDE,可以写C/C++可以搞C#,写网站等等,牛逼得爆。VS调试方便功能强大,一般公司也用它来开发。我在学C++的时候也是用的VS,在学习的时候感觉用到的东西越来越多,还没理解得东西也很多,比如说堆栈调用,寄存器等等,然后就了解到VS的反汇编、寄存器、内存、堆栈调用等等功能窗口。
       好了  还是来扯怎么看这些东西,怎么玩
1. 首先还是新建一个C/C++项目,然后找个地方打上断点
我项目代码是这样的,我在第5行的时候加了个断点,然后让程序停下来了。

2. 用快捷键看反汇编、寄存器、内存、堆栈调用
下面是快捷键
ALT+5是寄存器窗口:

ALT+6是内存地址窗口:

ALT+7是调用堆栈的窗口(在程序很大的时候通过堆栈调用窗口来看程序在哪个函数停止的,里面变量哪里是空指针等,是很有用的):

ALT+8是反汇编窗口:

       都说项目是调试出来的,是真的,写代码写得开心,可能在加班玩命堆代码的时候功能倒是做完了,但是有些地方有很多隐形的Bug,或许是同时忘了判断空指针等等小问题,程序老是崩溃,调试代码的技术还是很有必要的。
       用这几个窗口可以快速定位问题和学习C++和计算机系统。
========
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值