将 WinDbg 插件移植到 Visual Studio 2019 扩展

Porting WinDbg plugin to Visual Studio 2019 extension

我编写了一个 WinDbg 插件来帮助我的开发人员调试我们的应用程序。更具体地说,它有助于 运行 对我们应用程序中发现的数据结构进行特殊诊断,并防止开发人员必须手动检查大量数据结构信息。

我现在正在考虑将此 WinDbg 移植到 Visual Studio 2019(作为 VSIX 扩展),但我不知道从哪里开始。我可以研究如何编写这样的扩展,但我不知道从哪里开始在 Visual Studio.

中寻找与调试器相关的 API

@Patrick 我在写评论后谷歌搜索但忘记更新

看起来 vs 有自己的 IDebugInterface 集,称为 IDebugEngine1、2 等

我从未编写过 vs 扩展程序,但正在尝试拼凑一个,当我有时间时会更新

与此同时你可以通读这篇文章 documentation

它似乎是 c#,而且这也不是我的强项

Requirements

Header: Msdbg.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

提供了两个示例,您可以参考here

我下载了这个 sample 但没有给它足够的时间

看起来 api 与 windbg 完全不同,示例 Attach 如下所示

/* static */
DebuggedProcess^ Worker::AttachToProcess(ISampleEngineCallback^ callback, int processId)
{
    ASSERT(Worker::MainThreadId != Worker::CurrentThreadId);

    HANDLE hProcess = Win32HandleCall( ::OpenProcess(
        PROCESS_ALL_ACCESS, 
        FALSE, 
        processId
        ));

    String^ nameFromHandle = GetProcessName(hProcess);

    String^ processName = System::IO::Path::GetFullPath(nameFromHandle);

    Win32BoolCall( ::DebugActiveProcess(
        processId
        ) );

    DebuggedProcess^ process = gcnew DebuggedProcess(Attach, callback, hProcess, processId, processName);

    return process;
}