[DoNet]如何在远程机器上启动debugger

三 30th, 2011

本文是以代码的角度来解释,如何在远程机器上开启调试?这里将会利用WMI接口实现这个需求。使用WMI,开启一个被调试程序的进程,并利用WMI附加到一个已注册的调试器。下面就是一个简单的例子:

下面这段代码假定我们有一个名为ConsoleApplication1的进程运行在Machine1(被调试程序的机器),为了执行这段代码,注册的调试器需要附加到ConsoleApplication1的进程。如果你有多个调试器实例在Machine1上,那么“Select Debugger”对话框会弹出来。我们可以使用这种方法将调试器附加到任意的一个进程或者服务上。

ConnectionOptions options = new ConnectionOptions();
ManagementScope scope = new ManagementScope("\\\\machine1\\root\\cimv2", options);
scope.Connect();
      
ObjectQuery oQuery = new ObjectQuery("Select * from Win32_Process where Name Like 'ConsoleApp%'");
//Execute the query
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(scope,oQuery);
 
//Get the results
ManagementObjectCollection objReturnCollection = objSearcher.Get();
 
foreach (ManagementObject oReturn in objReturnCollection)
{
    if (oReturn["Name"].ToString().Equals("ConsoleApplication1.exe"))
    {
        object outparams = oReturn.InvokeMethod("AttachDebugger", null);
    }
}

这段代码通过WMI获取到活动的进程,当找到需要调试的进程,就调用这InvokeMethod将一个调试器附加到该进程上。

如果需要了解更多关于WMI的内容,请参考:

MSDN:http://msdn.microsoft.com/en-us/library/ms257364(VS.80).aspx





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51117

订阅本站:http://www.wangyuxiong.com/feed

分类: 语言编程         标签: , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量