Visual Studio.net 调试学习笔记

来源:互联网 发布:php 二维数组取最大值 编辑:程序博客网 时间:2024/05/20 16:41

什么是symbols?
!sybols是用来存储源代码中函数、变量名与编译后的机器代码的对应关系的,因为机器代码中函数名、变量名都

只是32位地址而已,有了symbols,我们就可以在调试时把获得的地址转化为函数、变量名来显示。
!?symbols还做源代码和机器代码的映射,这样当机器代码执行到哪时,我们就可以在源代码调试上跟踪到源代

码的相应位置,这就是我们为什么可以用断点和单步之类的来跟踪
*windows 平台下symbol文件为.pdb文件

symbols匹配。
*1,打开cmd
2,“cd”到windbg目录下
3,打命令“symchk 可执行文件路径 /s symbols所在目录”
4,如果匹配,显示:
SYMCHK:FAILED files=0
SYMCHK:PASSED+IGNORED=1

什么是dump?
*!dump是调试程序保存的某个时间片程序的内存拷贝,或者说犯罪现场。用来重现这个时刻程序的状态,dump一般

还用于程序或者系统崩溃时。

什么是Waston?
windows自带的简单的debug程序,唯一的作用是当程序崩溃时,保存dump,发送到MS

how Create a dump?
1,打开windbg,按F6,选择需要附加的进程。
2.输入命令".dump /ma 目标路径.dmp",其中/ma,m=mini dump,a=all。

Visual Studio 断点(breakpoint)
condition:设置条件表达式,条件符合时停下
hit count:根据经过的次数大于等于小于多少次停下
when hit:设置输出语句,经过时不停下,在output窗口打印该语句。适合用于窗口调试
enable/disable breakpoint:该窗口在 dubug->windows 下

如何捕捉异常?
当异常代码被try-catch封装了,调试程序就捕捉不到异常了,需要配置编译器,当异常被封装时立刻捕捉,步骤
debug->exceptions->勾选Common Language Runtime Exceptions和Managed Debugging Assistants的Thrown项

调试工具/窗口(调试时,debug->windows 下)
Memory windows: 用16进制显示内存地址的存储的值
Dissemble window :反汇编
Watch window:
Immediate windows:可以即时的打一些命令,立即窗口会马上执行出来
Register Window:
Call Stack Windows: 程序的调用关系
Thread window:
Process window:把调试程序附加到进程上去调试
Module window:显示进程加载了那些DLL,这些DLL有没有加载symbol,加载的symbol地址。如果有dll加载symbol

失败,显示尝试过那些路径。

attach debugee
按F11加载源代码
没有solution,加载单一cs文件,也可以断点。

debug crash application
程序出错时,debug程序自动跳出来附加上去调试

remote debugging
Microsoft visual studio 9.0/common7/IDE/Remote Debugger下
把文件夹复制到目标机器上去。


?表示存疑
*表示确定一定以及肯定
!表示理解或者不确定