正如我现在所理解的,使用远程调试器的唯一方法是启动目标应用程序,然后通过Visual Studio附加到它。有没有办法从程序的最开始捕获所有断点?
我的程序中有代码需要调试,我永远无法快速连接调试器以捕获执行代码。
答案 0 :(得分:12)
如果您可以更改代码,请尝试在应用的起点注入以下代码:
System.Diagnostics.Debugger.Launch();
当此行被点击时,它会提示您附加调试器,有效地等待您的响应。由于您使用的是远程调试器,因此您应该能够在该点附加,然后取消对话框。希望这会有所帮助。
答案 1 :(得分:10)
解决方案
System.Diagnostics.Debugger.Launch
也不适合我。但是,我设法在我的应用程序中解决了我的问题,启动了以下内容:
while (!System.Diagnostics.Debugger.IsAttached)
System.Threading.Thread.Sleep(100);
这样,应用程序将等待调试器连接。
答案 2 :(得分:4)
使用Visual Studio Pro 2010构建.NET 4应用程序,这对我不起作用。
显然这是一个已知的错误:
目前正在为我工作的一个(有点hacky)解决方法就是让应用程序在主窗口初始化开始时抛出一个MessageBox():
public partial class MainWindow : Form
{
public MainWindow()
{
// To allow you time to attach a remote debugger ...
MessageBox.Show("Please attach debugger");
InitializeComponent();
...
现在,您可以随意附加VS远程调试器,然后在消息框中单击“确定”。
丑陋但功能齐全。
答案 3 :(得分:2)
在目标计算机上,设置与本地计算机上Visual Studio年份匹配的Visual Studio远程调试器。
请注意为您提供服务器名称的行。
在Visual Studio的本地计算机上,打开启动项目的属性,然后打开“调试”部分。
选中“使用远程计算机”框,然后在文本字段中输入从Visual Studio远程调试器获得的服务器名称。
在“开始操作”下,选择“启动外部程序”。然后将要在目标计算机上启动的.exe路径放置在字段中。
现在,当您从本地计算机按启动按钮时,它将在连接了调试器的目标计算机上启动程序。
答案 4 :(得分:0)
对我来说正确的解决方案是答案的组合。
while循环将检查是否已从Visual Studio附加调试器,并在附加调试器时退出循环。
System.Diagnostics.Debugger.Launch();
while (!System.Diagnostics.Debugger.IsAttached)
{
System.Threading.Thread.Sleep(100);
}