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