VS调试技术-断点与跟踪点

一、设置简单断点(通过快捷菜单)
1.在源窗口中,单击要设置断点的那行可执行代码。
2.在快捷菜单中,转到“断点”,然后选择“插入断点”。

二、设置简单断点(通过“调试”菜单)
1.在源窗口中,单击要设置断点的那行可执行代码。
2.从“调试”菜单中选择“切换断点”。

三、设置地址断点
如果还没看到“反汇编”窗口,则需要从“调试”菜单中选择“调试”窗口,然后选择“反汇编”。
在“反汇编”窗口中,单击代码行,然后从“调试”菜单中选择“切换断点”。
- 或 -

右击代码行,然后从快捷菜单的“断点”子菜单中选择“插入断点”。


四、插入函数断点
1.可选:在源窗口中,单击函数名。此操作会将函数名插入到“新建断点”对话框中,这样您就不需要键入它了。
2.从“调试”菜单中指向“新建断点”,然后单击“在函数处中断”。
出现“新建断点”对话框。
3.如果在“函数”文本框中没有显示要设置断点的函数的名称,请在“函数”框中键入该函数的名称,并确保“语言”下拉列表显示该函数的正确的编程语言。
如果该函数没有重载,则只需要函数名。对于重载的函数,可以指定参数以正确地设置断点。键入函数名称并在后面的括号中放置参数类型名称。例如,如果名为 A 的 C# 方法使用两个参数:前面一个是 int,后面一个是 string,则应键入 A(int, string)。
在本机 C++ 中,可以使用上下文运算符。(请参见上下文运算符(C/C++ 语言表达式)。)
4.如果希望 Visual Studio IntelliSense 验证您输入的函数名,请选中“使用 Intellisense 验证函数名”复选框(仅适用于 Visual Basic、C# 和 J#)。
选中该复选框后,如果键入的内容与重载签名不匹配,则会显示“选择断点”对话框,在该对话框中可以选择要将断点放入的重载。
如果未选中该复选框且键入了函数名,则在所有重载中插入断点。
如果未选中该复选框且键入了不匹配的签名,则不会向代码中插入任何断点。
5.断点被设置在函数的开始处。如果要在函数中的其他位置设置断点,请编辑“行”和“字符”框中的值。
6.单击“确定”。
从“断点”窗口插入函数断点
7.在“断点”窗口中,单击“新建”下拉列表,然后选择“在函数处中断”。
出现“新建断点”对话框。
8.在“函数”文本框中键入函数名,并确保“语言”下拉列表显示该函数的正确编程语言。
如果该函数没有重载,则只需要函数名。对于重载的函数,可以指定参数以正确地设置断点。键入函数名称并在后面的括号中放置参数类型名称。例如,如果名为 A 的 C# 方法使用两个参数:前面一个是 int,后面一个是 string,则应键入 A(int, string)。
在本机 C++ 中,可以使用上下文运算符。(请参见上下文运算符(C/C++ 语言表达式)。)
9.如果希望 Visual Studio IntelliSense 验证您输入的函数名,请选中“使用 Intellisense 验证函数名”复选框(仅适用于 Visual Basic、C# 和 J#)。
选中该复选框后,如果键入的内容与重载签名不匹配,则会显示“选择断点”对话框,在该对话框中可以选择要将断点插入的重载。
如果未选中该复选框且只键入了函数名,则在所有重载中插入断点。
如果未选中该复选框且键入了不匹配的签名,则不会向代码中插入任何断点。
10.断点被设置在函数的开始处。如果要在函数中的其他位置设置断点,请编辑“行”和“字符”框中的值。
11.单击“确定”。

五、针对函数调用设置断点
在“调用堆栈”窗口中,在处于中断模式的情况下,右击函数调用,然后从快捷菜单“断点”子菜单中选择“插入断点”。
断点符号出现在函数调用名称旁的左边距中。
查看断点属性时,该断点显示为一个地址断点,这个地址断点具有一个与函数中下一个可执行指令相对应的内存位置。

六、如何设置内存更改断点
12.从“调试”菜单中选择“新建断点”,然后单击“新建数据断点”。
- 或 -
在“断点”窗口中,单击“新建”下拉列表并选择“新建数据断点”。
出现“新建断点”对话框。
13.在“地址”框中,输入内存地址或计算结果为内存地址的表达式。例如,输入 &foo ,则当变量 foo 的内容更改时中断。
14.在“字节计数”框中,输入希望调试器监视的字节数。例如,如要输入 4,则调试器将监视从 &foo 开始的四个字节,并且如果这些字节中的任意一个的值发生变化,就会中断。
15.单击“确定”。

七、指定一个断点筛选器
1.在“断点”窗口中,右击断点并从快捷菜单中选择“筛选器”。
- 或 -
在源窗口、“反汇编”窗口或“调用堆栈”窗口中,右击包含断点标志符号的行,并从快捷菜单中选择“断点”中的“筛选器”。
在“断点筛选器”对话框中,使用“筛选器”框按名称指定计算机,并按名称或 ID 号指定进程或线程。
2.单击“确定”。

八、指定命中次数
1.在“断点”窗口中,右击断点并从快捷菜单中选择“命中次数”
- 或 -
在源代码、“反汇编”或“调用堆栈”窗口中,右击包含断点的行,然后从快捷菜单的“断点”子菜单中选择“命中次数”。
2.在“命中次数”对话框中,从“命中断点时”列表框中选择所需的行为。
3.如果选择除“总是中断”以外的任何设置,则列表框旁边将出现一个编辑框。编辑出现在编辑框中的整数,可以设置所需的命中次数。
4.单击“确定”。

九、指定断点条件
1.在“断点”窗口中,右击包含断点标志符号的行,并从快捷菜单中选择“条件”。
- 或 -
在源窗口、“反汇编”窗口或“调用堆栈”窗口中,右击包含断点标志符号的行,并从快捷菜单中选择“断点”中的“条件”。
2.在“断点条件”对话框的“条件”框中输入有效的表达式。
3.如果想要在满足表达式时中断,请选择“为真”;如果想要在表达式的值已更改时中断,请选择“已更改”。
 注意
直到第一次到达该断点后,调试器才会计算该表达式。如果选择“已更改”,调试器不会将条件的第一次计算当作一次更改,所以,第一次计算时不会命中断点。
4.单击“确定”。

十、从头开始创建跟踪点
1.在源窗口中,单击要设置跟踪点的行,然后从快捷菜单的“断点”中选择“插入跟踪点”。
2.即会出现“命中条件”对话框。它包含两个文本框:“打印消息”和“运行宏”,您可以在其中输入自定义操作。
此时,您可以接受预先选定的跟踪点设置,也可以按如下方式编辑这些设置:
若要创建输出消息的跟踪点,请选择“打印消息”,然后在相应的文本框中输入消息文本。利用“打印消息”,可以将跟踪点用于很多原本要使用 Trace 类来实现的目的,只是适用跟踪点不需要修改代码。
在消息中可以使用 DebuggerDisplayAttribute 语法包括编程信息。(请参见 DebuggerDisplayAttribute。)例如:
In function '{$FUNC}', on thread '{$TID}'
- 或 -
Used variable: {varName}, function name: {functionName($FUNC)}
可以使用在“命中断点时”对话框中显示的任何关键字。此外,还可以使用没有在该对话框中显示的其他两个关键字:用于插入当前 CPU 滴答计数的 $TICK 和用于插入当前文件位置的 $FILEPOS。
在“命中断点时”对话框打开时,在“打印消息”中会显示默认消息。如果要接受此消息,只需单击“确定”。
若要运行 Visual Studio 自动化模型宏,请选择“运行宏”并从下拉列表框中选择宏。
在选择“打印消息”或“运行宏”后,“继续执行”复选框会变为激活状态。如果不希望跟踪点中断程序的执行,请选中“继续执行”。
3.单击“确定”。
从现有断点创建跟踪点
4.在源窗口、“反汇编”窗口或“调用堆栈”窗口中,右击断点标志符号,然后从快捷菜单(“断点”子菜单)中选择“命中条件”。
- 或 -
在“断点”窗口中,右击断点标志符并从快捷菜单中选择“命中条件”
5.即会出现“命中条件”对话框。
6.单击“确定”以接受预先选定的跟踪点设置,或者按照前面过程中说明的方法编辑这些设置。


可以从“调试”菜单打开“断点”窗口。可以使用下面的导航功能从“断点”窗口中的断点转到源代码或“反汇编”窗口中的对应位置。
posted @ 2013-04-11 11:29  weinyzhou  阅读(3430)  评论(0编辑  收藏  举报