我需要调试从一键安装启动的应用程序。 (VS 2010,Excel VSTO与Office 7)。根据提供给一键安装程序应用程序的登录凭据,用户应该看到两个启动页面中的一个。这一切在我的机器上运行正常,但在部署时,从默认页面更改为第二个启动页面会导致错误。
对于我的生活,我无法弄清楚如何从VS2010中调试过程。我可以在输入凭据之前附加到登录名,但我无法附加到Excel,因为在我单击“确定”按钮之前它不会启动。
那么,是否有某种方法可以使用Excel,或者更确切地说,我的代码在实例化时调用调试器,因此我可以弄清楚为什么我的图像资源在部署的应用程序中不可用?
感谢。
兰迪
答案 0 :(得分:98)
System.Diagnostics.Debugger.Launch();
答案 1 :(得分:4)
如果您安装了Visual Studio,Juan的答案是最好的。但是如果目标机器人没有它,你可能需要进行某种暂停(我通常会在主体中放置一个对话框,使其等待我连接)然后使用remote debugger在你的机器上贴上它
答案 2 :(得分:0)
如果运行时间足够长,你可以附加到Excel,但严重的是我怀疑错误是否存在。
您可以附加到正在运行的应用程序/进程,如果符号可用(调试版本),您可以进行实际调试,但应用程序必须足够长,以便您选择它进行附加。
我认为,根据您所说的,您需要的是正确的异常和错误记录,Log4Net或NLog之类的东西,它会在每个异常中存储所有内容(堆栈跟踪,异常详细信息......),因此您可以清楚地识别真正的问题是什么。
答案 3 :(得分:0)
要在代码中强制使用断点,请执行以下操作:
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break();
有时,必须在Visual Studio外部启动应用程序。然后,我使用此代码稍后附加调试器:
using System.Diagnostics;
....
Process[] procName = Process.GetProcessesByName("devenv"); // check if VS currently running
if(procName.Length > 0)
MessageBox.Show("Wait for debugger attach");
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break(); // force a breakpoint