我有一个用C#和PDF打印机编写的.NET GUI应用程序。 PDF打印机有一个字段,您可以在其中设置命令以启动外部应用程序。
在这种情况下,我可以使用此打印机打印文档,打印机将带有文件路径的EXE文件作为参数启动生成的PDF文件。如何在从打印机启动应用程序时调试我的应用程序?
在Visual Studio 2010中,我可以为命令行参数设置调试信息,这样可以正常工作。但是,如果从打印机启动应用程序,则应用程序无法正常工作。因此,我想从打印机启动时调试我的应用程序。我怎样才能做到这一点?是否有一个参数可以在调试模式下启动EXE文件或类似的东西?
答案 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
当然,你会想要禁用它进行制作。