2

我构建了一个控制台应用程序,允许用户将文件拖放到它上面,它会处理它。但是,它在处理文件时崩溃了,我不知道发生了什么。

我该如何调试呢?控制台关闭得太快,我看不到问题所在,当我通过命令行调用它并在那里指定一些参数时,我无法重现错误。

程序如下

  • 在 Windows 资源管理器中,我将输入文件(图像)拖到 exe 上
  • 然后exe将读取图像并对其进行处理
  • 然后我将图像保存在一个新文件中

保存期间发生崩溃,但我对问题出在哪里不太感兴趣,但事实上我无法想出一种方法来正确调试它。

4

3 回答 3

3

如果您的应用程序由其他程序(如资源管理器)自动启动 - 配置Launch debugger on process start

另一种简单的方法(当无法调整注册表时)是在代码中添加Debugger.Break以便有机会附加调试器。甚至是 Thread.Sleep(10000) 让你有机会抓住它。

拖放没有什么特别的(与通常需要远程调试的焦点问题不同)。

使用正确的参数启动应用程序表单 VS 或附加到正在运行的应用程序。您可能希望为 CLR 异常打开“Debug->Exception->break when throw”(可能需要禁用“Tools->Options->Debug->My code only”)。

在附加到任何可疑痕迹的过程中观察输出窗口。

如果 VS 有问题,您可以以同样的方式使用 WinDbg ......但之前先尝试 VS route。

于 2012-07-28T22:37:14.793 回答
0

您可以在项目属性中指定您正在调试命令行,就像

带有调试时间事件参数的 Visual Studio 2012

然后你可以像往常一样放置断点并调试你的应用程序。

于 2012-07-28T22:12:10.283 回答
0

首先确保您尝试了 Alexei Levenkov 提到的所有内容,如果这对您不起作用(这可能只会在您以某种方式做错时才会发生)您也可以使用简单的日志文件来跟踪错误,但我总是会选择VS调试器,因为那更舒服。

于 2012-07-28T22:41:40.423 回答