调试 C# GUI

发布于 2024-11-16 20:48:49 字数 461 浏览 5 评论 0原文

概述: 我正在调试一个 C# GUI,它接收 XML 文件并启动一个新进程来对 XML 文件执行统计计算。由于某种原因,该进程在执行过程中退出,没有明显的错误。出现一个 Windows 消息框并显示“已停止工作,Windows 正在寻找解决方案”

我尝试过的操作:

  • 我尝试写入日志以跟踪 执行应用程序,这样我就可以 看看哪里失败了,但是过程 似乎在不同点退出 程序。
  • 我尝试使用视觉工作室 调试器跟踪程序 执行,但类似
    进程在不同时间退出。

我想知道

  • 我还有其他免费的调试器吗? 可以尝试吗?
  • 我可以打电话看看吗 进程的当前状态 当它运行时?
  • 有人能想到还有什么可以尝试的吗?

任何帮助都会很棒。 谢谢。

Overview:
I am debugging a C# GUI that takes in an XML file and starts a new Process to perform statistical calculations on the XML file. The process for some reason is exiting in the middle of execution with no apparent errors. A windows message box appears and says " has stopped worked, Windows is searching for a solution"

What I've tried:

  • I tried writing to a log to trace the
    execution of the application so I can
    see where it fails, but the process
    seems to exit at different points in
    the program.
  • I tried using Visual studios
    debugger to follow the program
    execution, but similarly the
    process exits at different times.

What I'd like to know:

  • Are there any other free debuggers I
    could try?
  • Are there any calls I can make to see
    the current state of the process
    while it's running?
  • Can anyone think of anything else to try?

any help would be great.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

唔猫 2024-11-23 20:48:49

Visual Studio 的调试器是有史以来最好的调试工具,您应该更多地关注学习使用它而不是寻找其他任何东西。

要回答您的问题,请转到调试>异常 (CTRL+D CTRL+E),然后勾选公共语言运行时异常旁边的抛出框。这将导致调试器在抛出异常时中断,无论您是悄悄地接受它还是完全忽略它。这应该有助于查明您的问题。

Visual Studio's debugger is the best debugging tool ever written, you should focus more on learning to use it than looking for anything else.

To answer your question, go to Debug>Exceptions (CTRL+D CTRL+E) and tick the Thrown box next to Common Language Runtime Exceptions. This will cause the debugger to break whenever an exception is being thrown, regardless if you quietly swallow it or completely ignore it. This should help pinpoint your problem.

紫罗兰の梦幻 2024-11-23 20:48:49

在代码中的战略点添加一些

Debugger.Break();

语句以强制您进入调试器可能是解决此类问题的有用方法......

只是不要忘记将它们删除!

Adding some

Debugger.Break();

statements at strategic points in your code to force you into the debugger can be a useful way to troubleshoot stuff like this...

Just don't forget to take them out!

儭儭莪哋寶赑 2024-11-23 20:48:49

您可以注册 AppDomain.CurrentDomain UnhandledException 事件来查看是否捕获您的问题。

在显示主窗体之前,在 Program.cs 文件中添加类似的内容:

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(UnhandledExceptionEventOccured);

private static void UnhandledExceptionEventOccured(
    object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if(ex != null)
    {
        MessageBox.Show(ex.StackTrace, ex.Message);
    }
}

另一种选择是通过 WinDbg

You could register for the AppDomain.CurrentDomain UnhandledException event to see if catches your problem.

Adding something like this in your Program.cs file before the main form is shown:

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(UnhandledExceptionEventOccured);

private static void UnhandledExceptionEventOccured(
    object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if(ex != null)
    {
        MessageBox.Show(ex.StackTrace, ex.Message);
    }
}

Another option would be to run your application through WinDbg

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文