有没有办法检测附加的调试器是不是是远程调试器?
Posted
技术标签:
【中文标题】有没有办法检测附加的调试器是不是是远程调试器?【英文标题】:Is there a way to detect whether the attached debugger is remote-debugger?有没有办法检测附加的调试器是否是远程调试器? 【发布时间】:2014-09-26 16:42:35 【问题描述】:使用System.Diagnostics.Debugger.Debugger.IsAttached
我可以看出附加了一个调试器。有没有办法检测附加的调试器是否是远程调试器(Visual Studio Remote Debugger Monitor
)?
【问题讨论】:
【参考方案1】:你可以使用来自kernel32.dll
的原生CheckRemoteDebuggerPresent
来自MSDN:
CheckRemoteDebuggerPresent 中的“远程”并不意味着 调试器必须驻留在不同的计算机上;相反,它 表示调试器驻留在单独的并行 过程。
您可以按如下方式使用它:
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
static extern bool CheckRemoteDebuggerPresent(IntPtr hProcess, ref bool isDebuggerPresent);
public static void Main()
bool isDebuggerPresent = false;
CheckRemoteDebuggerPresent(Process.GetCurrentProcess().Handle, ref isDebuggerPresent);
Console.WriteLine(string.Format("Debugger Attached: 0", isDebuggerPresent));
Console.ReadLine();
【讨论】:
以上是关于有没有办法检测附加的调试器是不是是远程调试器?的主要内容,如果未能解决你的问题,请参考以下文章