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

C# 如何在VisualStudio2010中调试从另一个进程启动的C.NET应用程序,c#,.net,visual-studio-2010,debugging,C#,.net,Visual Studio 2010,Debugging,我有一个用C编写的.NETGUI应用程序和一个PDF打印机。PDF打印机有一个字段,您可以在其中设置启动外部应用程序的命令 在这种情况下,我可以用这台打印机打印文档,打印机以生成的PDF文件的文件路径作为参数启动EXE文件。从打印机启动应用程序时,如何调试应用程序 在VisualStudio2010中,我可以为命令行参数设置调试信息,这很好。但是如果应用程序是从打印机启动的,那么应用程序就不能正常工作。因此,我想在从打印机启动应用程序时调试它。我该怎么做?是否有参数可用于在调试模式或类似情况下启

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

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


在VisualStudio2010中,我可以为命令行参数设置调试信息,这很好。但是如果应用程序是从打印机启动的,那么应用程序就不能正常工作。因此,我想在从打印机启动应用程序时调试它。我该怎么做?是否有参数可用于在调试模式或类似情况下启动EXE文件?

尝试附加到进程:

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

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

a、 如果你想要的程序 调试正在另一台计算机上运行, 您必须首先选择遥控器 计算机有关详细信息,请参阅 如何:选择远程计算机

b、 如果进程是在 不同的用户帐户,请选择 显示来自所有用户的进程检查 盒子

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

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

a、 单击选择

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

c、 单击“确定”

4.单击“附加”

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

您可以连接到多个服务器 调试程序时,但 系统中只有一个程序处于活动状态 随时调试器。您可以设置 调试位置中的活动程序 工具栏或“进程”窗口。对于 有关详细信息,请参见如何:设置 当前程序

所有调试菜单执行命令 影响活动程序。你可以 从数据库中断开任何已调试的程序 “进程”对话框或“全部中断” “调试”菜单中的附加程序。 有关详细信息,请参见如何: 中断执行


您可以在进程开始使用小的注册表调整时附加到该进程

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
使用可执行文件的名称创建一个新密钥,该密钥将显示在例如myapp.exe中。在此下,创建一个名为debugger的新字符串值,并将其设置为vsjitdebugger.exe


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

考虑在代码中添加一个调用,明确请求将调试器附加到当前位置。这从Win32时代就开始了,并以和的形式出现在.NET中

如果您不想第一次触发,还可以通过以下方式添加逻辑来决定何时触发:

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

当然,您还需要在生产中禁用它。

问题是该进程没有运行。当我从Word打印文档时,打印机仅生成pdf文件并打开我的exe。因此,没有要附加的进程正在运行。应用程序的主机进程是什么?您可以附加到主机进程。i、 e过去/现在调试sharepoint时,我们连接到IIS进程。我想是启动我的应用程序的打印机,不是吗?链接已断开。非常感谢。。这就是我要找的。我有个问题!当我删除创建的注册表项时,它没有效果。此时仍会出现一个窗口,询问要附加哪个调试器!