c# – 以编程方式分离调试器

我有一个第三方库在内部执行某些操作,导致它在连接调试器时大大减慢,即使在发布模式下也是如此.

我已经找到了100个关于如何通过调试 – >手动在Visual Studio中分离调试器的解释.分离过程.但是,我还没有看到任何人提供一个示例,其中程序可以将任何附加的调试器分离给自己.

基本上是Debugger.Launch()的分离版本?

解决方法

根据 Why can’t you detach in interop-debugging?,CLR不支持分离进程.但Visual Studio可以做到这一点.但这篇文章已有5年历史了,你可以通过pinvoke从Windows Api使用 DebugActiveProcessStop吗?
BOOL WINAPI DebugActiveProcessStop(
  __in  DWORD dwProcessId
);


[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DebugActiveProcessStop([In] int Pid );

编辑:试过这个:在当前进程中,即使提升,它也会拒绝访问.

CLR Managed Debugger (mdbg) Sample 20062011 version也有任何内容

最后这篇文章explains what you need to do to use ICorDebug::Detach和我认为visual studio确实这样做了.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...