Cli*_*rce 59 .net debugging remote-debugging breakpoints
今天我遇到了一个问题,我需要远程调试一个程序.该程序是从另一个系统启动的,所以我真的没有机会在命令行上与它进行交互.我可以轻松改变它的来源.
我需要做的是让程序正常启动,然后等待我用调试器连接它.我无法想出办法让我开心.我找到了错误,但没有调试器的帮助.
while(true) { }
Run Code Online (Sandbox Code Playgroud)
保持进程活着,然后我可以用调试器"设置下一个语句",但它看起来很尴尬和粗鲁.
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
看起来很奇怪,因为实际上没有一个控制台供我输入.(它也没有用.设置下一个语句然后运行会带你回到ReadLine()等待.)
那么我可以在.NET/CLR/C#程序中插入什么样的代码来说"在这里等到我可以用调试器附加"?
Dan*_*son 107
您可以使用System.Diagnostics.Debugger.IsAttached属性来检查调试器是否附加到进程.此应用程序将等待直到附加调试器:
using System;
using System.Diagnostics;
using System.Threading;
namespace DebugApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Waiting for debugger to attach");
while (!Debugger.IsAttached)
{
Thread.Sleep(100);
}
Console.WriteLine("Debugger attached");
}
}
}Run Code Online (Sandbox Code Playgroud)
Mar*_*urn 18
这听起来就像你需要的:
Debugger.Launch();
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx
"启动并附加一个调试程序."
连接远程调试器的工作方式与使用本地调试器完全相同。
首先,执行通常的操作:
System.Diagnostics.Debugger.Launch();
Run Code Online (Sandbox Code Playgroud)
您将看到选择调试器的提示。此时执行已暂停,因此您可以连接远程调试器并从提示中选择“否”。
| 归档时间: |
|
| 查看次数: |
22500 次 |
| 最近记录: |