我有一个使用n-classes
和m-methods
的更大的(c#) WPF应用程序。我想在每个方法中放置一个断点,所以每次我按下应用程序中的按钮或调用任何方法时,我都希望VS2010中的应用程序命中该断点。我想了解应用程序的流程/进度。
因为我有很多方法,所以我不想在每个方法中都手动设置断点。
有没有什么命令或工具可以在我的VS2010解决方案中到处设置断点?
编辑:可能类似于下面的插件:http://weblogs.asp.net/uruit/archive/2011/08/04/visual-studio-2010-addin-setting-a-class-breakpoint.aspx
edit2:有一些答案,但似乎没有一个是直接而简单的解决方案。还要别的吗?
发布于 2013-02-10 03:42:49
This answer建议使用一个可以按您的要求执行的宏,但我个人的建议是使用分析器-它允许您在运行时暂停和恢复分析(几乎所有的商业分析器都是这样做的),然后在单击按钮之前单击“开始分析”按钮。在探查器中查看调用树通常是了解应用程序正在做什么的一种非常方便的方法,这比在调试器中单步执行要多得多。
更新:这个特性存在于我正在开发的一个名为OzCode的Visual Studio扩展中。使用OzCode时,当您单击类定义旁边的图标时,您将看到QuickAction:
发布于 2016-02-25 23:12:01
这里有一个简单的文本替换的快速而肮脏的方法:
"^ {"
.Advanced
> Format Document
Ctrl+H
"^ {"
." {System.Diagnostics.Debugger.Break();"
Alt+A
工作原理:它使用Visual Studio文档格式化程序,并假设文件中的所有方法都以两个制表符开头,然后是一个"{“。因此,任何以两个制表符和"{“开头的行将被替换为相同的两个制表符、相同的"{”以及对调试器的调用。
如果你的文件有嵌套的枚举等,你会得到编译器错误,因为文本替换不区分方法和枚举。例如,您将看到以下内容:
enum MyColors
{ System.Diagnostics.Debugger.Break(); //error here
Red,
Green,
Blue,
}
如果您想要禁用这些断点,我能想到的最好的方法是一个简单的bool。在代码中的某处插入以下内容:
#if DEBUG
private static bool _ignoreDebug = false;
#endif
(我将#if DEBUG
放在其中作为一个标志,表明此代码仅用于调试。这是不必要的),然后在上面的步骤#4中,使用这个替换字符串:
" {if(!_ignoreDebug){System.Diagnostics.Debugger.Break();}"
然后,当你点击一个断点并且不想再点击时,在监视窗口中输入this并点击enter _ignoreDebug = true
。要重新打开它,您需要在可以访问_ignoreDebug
布尔值的地方插入一个手动断点。
要从你的代码中删除所有这些,要么做另一个文本替换,要么编辑撤销所有内容。
发布于 2013-02-08 17:06:53
我认为您可以使用如下工具为它创建一个“方面”:postsharp
面向方面的编程允许您将代码添加到每个方法的开头或结尾(通过后处理步骤)。所以添加这行代码很简单:
System.Diagnostics.Debugger.Break()
添加到每个方法中(实际上不需要编辑所有的源代码)。更典型的是,它用于将日志语句添加到每个方法的开头:“end DrawLine(x=30,y=80,z=12)”和方法的结尾:“log DrawLine(x,y,z)”。这使得跟随你的程序流程变得容易。
https://stackoverflow.com/questions/14750967
复制相似问题