为默认构造函数添加断点
Add break point to default constructor
我有一个 class,它本身就有一个默认构造函数。
public class OneRollingFileAppender : RollingFileAppender
{
#region RollingFileAppender Overrides
protected override void Append(LoggingEvent loggingEvent)
{
GlobalFactory<ILoggingEventParameterManager>.Instance.Apply(loggingEvent);
base.Append(loggingEvent);
}
#endregion
}
在不编辑代码的情况下,例如添加新构造函数或属性,我如何断点默认构造函数?
注意:应该有一种技术可以在IL或内存中找到代码,然后我想在那里设置一个断点。
我相信您正在使用 log4net。由于您没有源代码,因此您不能在构造函数上放置断点。
如果您创建一个变量并在您的 class 中分配一个值,您可以在那里放置一个断点,当 class 的一个实例被创建时该断点将被触发。
public class OneRollingFileAppender : RollingFileAppender
{
int foo = 0; //Place break point here
}
您不能在您无法控制的已编译代码中放置断点。但是,使用 ReSharper 之类的东西,您可以进入第三方代码。参见:https://www.jetbrains.com/help/resharper/Debugging_Without_Source_Code.html
使用 WinDbg + SOS 扩展
使用 Windbg 附加到进程(File/Attach 处理)
加载 sos (.loadby sos mscorwks)
设置断点( !bpmd mylib.dll Namespace.ClassName..ctor )
如果您只想知道 class 何时创建,您可以在 Visual Studio 中使用函数断点。 Debug -> New Breakpoint
作为函数名称,您输入 class 名称。
我有一个 class,它本身就有一个默认构造函数。
public class OneRollingFileAppender : RollingFileAppender
{
#region RollingFileAppender Overrides
protected override void Append(LoggingEvent loggingEvent)
{
GlobalFactory<ILoggingEventParameterManager>.Instance.Apply(loggingEvent);
base.Append(loggingEvent);
}
#endregion
}
在不编辑代码的情况下,例如添加新构造函数或属性,我如何断点默认构造函数?
注意:应该有一种技术可以在IL或内存中找到代码,然后我想在那里设置一个断点。
我相信您正在使用 log4net。由于您没有源代码,因此您不能在构造函数上放置断点。
如果您创建一个变量并在您的 class 中分配一个值,您可以在那里放置一个断点,当 class 的一个实例被创建时该断点将被触发。
public class OneRollingFileAppender : RollingFileAppender
{
int foo = 0; //Place break point here
}
您不能在您无法控制的已编译代码中放置断点。但是,使用 ReSharper 之类的东西,您可以进入第三方代码。参见:https://www.jetbrains.com/help/resharper/Debugging_Without_Source_Code.html
使用 WinDbg + SOS 扩展
使用 Windbg 附加到进程(File/Attach 处理)
加载 sos (.loadby sos mscorwks)
设置断点( !bpmd mylib.dll Namespace.ClassName..ctor )
如果您只想知道 class 何时创建,您可以在 Visual Studio 中使用函数断点。 Debug -> New Breakpoint
作为函数名称,您输入 class 名称。