VS调试技巧
开始调试 从 “调试” 菜单中选择 “开始” 、 “逐语句” 或 “逐过程” 。 - 或 - 在源窗口中,右击可执行代码中的某行,然后从快捷菜单中选择 “运行到光标处” 。 如果选择“启动”,则应用程序启动并一直运行到断点。可以在任何时刻中断执行,以检查,
开始调试
-
从“调试”菜单中选择“开始”、“逐语句”或“逐过程”。
- 或 -
-
在源窗口中,右击可执行代码中的某行,然后从快捷菜单中选择“运行到光标处”。
如果选择“启动”,则应用程序启动并一直运行到断点。可以在任何时刻中断执行,以检查值,修改变量,或检查程序状态。有关更多信息,请参见中断执行。
若选择了“逐语句”或“逐过程”,应用程序启动并执行,然后在第一行中断。
如果选择“运行到光标处”,则应用程序启动并一直运行到断点或光标位置,具体看是断点在前还是光标在前。可以在源窗口中设置光标位置。某些情况下,不出现中断。这意味着执行始终未到达设置光标处的代码。
“调试”菜单提供了三个逐句通过代码的命令:
-
逐语句
-
逐过程
-
跳出
“逐语句”和“逐过程”的差异仅在于它们处理函数调用的方式不同。这两个命令都指示调试器执行下一行的代码。如果某一行包含函数调用,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。而“逐过程”执行整个函数,然后在函数外的第一行处停止。如果要查看函数调用的内容,请使用“逐语句”。若要避免单步执行函数,请使用“逐过程”。
在嵌套函数调用上,“逐语句”将进入并单步执行嵌套最深的函数。如果对类似 Func1(Func2()) 的调用使用“逐语句”,调试器将进入并单步执行函数 Func2。
在本机代码中,如果要进入并单步执行特定的嵌套函数,请使用快捷菜单中的“单步执行特定函数”命令。
位于函数调用的内部并想返回到调用函数时,请使用“跳出”。“跳出”将一直执行代码,直到函数返回,然后在调用函数中的返回点处中断。
参考http://msdn.microsoft.com/zh-cn/library/a3cwf295(v=vs.90).aspx
用“反汇编”窗口
只有在“选项”对话框中的“调试”节点下启用了地址级调试后,该功能才可用。但对于脚本或 SQL 调试是不可用的。
“反汇编”窗口显示与编译器所创建的指令对应的汇编代码。如果正在调试托管代码,则这些汇编指令对应于由实时 (JIT) 编译器创建的本机代码,而不是由 Visual Studio 编译器生成的 Microsoft 中间语言 (MSIL)。
除汇编指令外,“反汇编”窗口还可显示如下可选信息:
每条指令所在的内存地址 对于本机应用程序,这是实际内存地址。对于 Visual Basic、C# 或托管代码,这是距离函数开头的偏移量。
程序集代码派生于的源代码。
代码字节 — 实际计算机或 MSIL 指令的字节表示形式。
内存地址的符号名。
对应于源代码的行号。
汇编语言指令由助记符(指令名称的缩写)和代表变量、寄存器以及常量的符号所组成。每一条机器语言指令由一个汇编语言助记符代表,通常其后还跟有一个或多个变量、寄存器或常量。
如果您无法阅读汇编语言但又想充分利用“反汇编”窗口,请参考有关汇编语言编程的好书。汇编语言编程超出了我们对“反汇编”窗口进行简单介绍的讨论范围。
汇编语言代码在很大程度上依赖处理器的寄存器(对托管代码而言,依赖公共语言运行库寄存器),您将发现协同使用“反汇编”窗口和“寄存器”窗口将很有用,可以允许您检查寄存器内容。
您很可能愿意使用汇编语言,而从来不会愿意或需要查看原始的、数字形式的机器代码指令。不过,如果愿意的话,可以利用“内存”窗口或从“反汇编”窗口的快捷菜单中选取“代码字节”来查看。
上一篇: PHP调用Twitter的RSS的实现代码_PHP
下一篇: Python爬虫--urllib