如何在Visual Studio 2010中调试从另一个进程启动的C#.NET应用程序

时间:2011-05-20 15:26:00

标签: c# .net visual-studio-2010 debugging

我有一个用C#和PDF打印机编写的.NET GUI应用程序。 PDF打印机有一个字段,您可以在其中设置命令以启动外部应用程序。

在这种情况下,我可以使用此打印机打印文档,打印机将带有文件路径的EXE文件作为参数启动生成的PDF文件。如何在从打印机启动应用程序时调试我的应用程序?

在Visual Studio 2010中,我可以为命令行参数设置调试信息,这样可以正常工作。但是,如果从打印机启动应用程序,则应用程序无法正常工作。因此,我想从打印机启动时调试我的应用程序。我怎样才能做到这一点?是否有一个参数可以在调试模式下启动EXE文件或类似的东西?

3 个答案:

答案 0 :(得分:9)

尝试附加到流程:

http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx

  

附加到正在运行的进程   1.在“调试”菜单上,选择“附加到进程”。如果没有项目打开,请选择   在“工具”菜单上附加到“处理”。

     

2.在“附加到进程”对话框中,找到您想要的程序   附加到可用进程   名单。

     

a。如果您想要的程序   debug正在另一台计算机上运行,   你必须先选择遥控器   电脑。有关更多信息,请参阅   如何:选择远程计算机。

     

b。如果该过程在a下运行   不同的用户帐户,选择   显示所有用户的流程检查   框。

     

c。如果您通过Remote连接   桌面连接,选择显示   所有会话中的进程复选框。

     

3.在“附加到”框中,确保要调试的代码类型   上市。默认自动设置   试图确定什么类型的代码   你想调试。如果是自动的   设置不合适:

     

a。点击选择。

     

b。在“选择代码类型”对话框中,   单击调试这些代码类型和   选择要调试的类型。

     

c。单击“确定”。

     

4.单击“附加”。

     

可用进程列表是   打开时自动显示   “进程”对话框。流程   可以在后台启动和停止   对话框打开时。然而,   内容并不总是最新的。   您可以随时刷新列表   查看当前的进程列表   单击“刷新”。

     

您可以附加到多个   调试程序,但是   只有一个程序处于活动状态   随时调试。你可以设置   调试位置中的活动程序   工具栏或“进程”窗口。对于   更多信息,请参见如何:设置   当前计划。

     

所有Debug菜单执行命令   影响活动程序。您可以   打破任何调试的程序   进程对话框或全部中断   Debug菜单中附加的程序。   有关更多信息,请参见如何:   打破执行。

答案 1 :(得分:8)

当它开始使用小型注册表调整时,您可以附加到进程。

转到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

使用可执行文件的名称创建一个新密钥,它将显示在Task Manager中,例如myapp.exe。在此下,创建一个名为debugger的新字符串值,并将其设置为vsjitdebugger.exe

现在,当触发EXE文件时,将出现一个窗口,询问要附加到哪个调试器。

答案 2 :(得分:1)

考虑在代码中添加一个调用,该调用显式请求在当前位置附加调试器。从Win32开始,这种情况一直存在,并且.NET中的表面为System.Diagnostics.Debugger.Break(和System.Diagnostics.Debugger.Launch)。

您还可以添加逻辑以决定何时触发此操作,如果您不希望第一次执行此操作:

   #if DEBUG
      if (++staticCounter > 3) System.Diagnostics.Debugger.Break();
   #endif

当然,你会想要禁用它进行制作。