如何使用MDbgEngine逐步调试托管代码

本文关键字:调试 托管代码 何使用 MDbgEngine | 更新日期: 2023-09-27 18:25:09

假设我有一个简单的C#控制台应用程序(下面的代码)。我想使用mdbg管理器包装器一步一步地调试它。

using System;
namespace TestApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("1");
            Console.WriteLine("2");
            Console.WriteLine("3");
            Console.WriteLine("4");
            Console.WriteLine("5");
        }
    }
}

如何使用MDbgEngine逐步调试此代码?

[MTAThread]
static void Main(string[] args)
{
    var debugger = new MDbgEngine();
    debugger.Options.CreateProcessWithNewConsole = true;
    debugger.Options.StopOnException = true;
    var process = debugger.CreateProcess("TestApplication.exe", "", DebugModeFlag.Debug, null);
    process.Go();
    //HOW TO GO STEP BY STEP TROUGH THE TestApplication?
}

如何使用MDbgEngine逐步调试托管代码

您必须订阅process.PostDebugEvent事件,希望调试器能在应用程序开始时停止,或者您可以使用process.Breakpoints.CreateBreakpoint() 将断点放在您想要的位置

process.PostDebugEvent += (ss, ee) => {
    if (ee.CallbackType == ManagedCallbackType.OnBreakpoint)
    {
        // here do what you want and then you can
        // process.StepInto, StepOver, or StepOut to move from here
    }
};