《高级 .NET 调试技术全解析》
1. 概述
尽管 Microsoft .NET Framework 解决了内存损坏和泄漏这一古老问题,但代码仍可能出现与预期不符的情况,调试工作依旧必不可少。本文将深入探讨使用 Visual Studio .NET 进行 .NET 调试的具体策略,涵盖高级断点、监视窗口、调试技巧,以及如何使用 Microsoft Intermediate Language Disassembler (ILDASM) 解读 Microsoft 中间语言 (MSIL)。
2. .NET 程序的高级断点
2.1 条件表达式
在 .NET 调试中,条件断点的条件表达式可调用函数或方法,这为调试带来了更多可能,但也需注意副作用。例如,使用MyString.Length == 7这样的表达式时,可能会误以为调试器像 Win32 原生调试那样直接读取内存获取长度值。实际上,在 .NET 中,条件表达式能调用更多方法。
下面是一个示例代码:
using System ; namespace ConditionalBP { class TestO { public TestO ( ) { m_CallCount = 0 ; m_bToggle = false ; } private Int32 m_CallCount ; public Int32 CondTest ( )