我构建了一个控制台应用程序,允许用户将文件拖放到它上面,它会处理它。但是,它在处理文件时崩溃了,我不知道发生了什么。
我该如何调试呢?控制台关闭得太快,我看不到问题所在,当我通过命令行调用它并在那里指定一些参数时,我无法重现错误。
程序如下
- 在 Windows 资源管理器中,我将输入文件(图像)拖到 exe 上
- 然后exe将读取图像并对其进行处理
- 然后我将图像保存在一个新文件中
保存期间发生崩溃,但我对问题出在哪里不太感兴趣,但事实上我无法想出一种方法来正确调试它。
我构建了一个控制台应用程序,允许用户将文件拖放到它上面,它会处理它。但是,它在处理文件时崩溃了,我不知道发生了什么。
我该如何调试呢?控制台关闭得太快,我看不到问题所在,当我通过命令行调用它并在那里指定一些参数时,我无法重现错误。
程序如下
保存期间发生崩溃,但我对问题出在哪里不太感兴趣,但事实上我无法想出一种方法来正确调试它。
如果您的应用程序由其他程序(如资源管理器)自动启动 - 配置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。
您可以在项目属性中指定您正在调试命令行,就像
然后你可以像往常一样放置断点并调试你的应用程序。
首先确保您尝试了 Alexei Levenkov 提到的所有内容,如果这对您不起作用(这可能只会在您以某种方式做错时才会发生)您也可以使用简单的日志文件来跟踪错误,但我总是会选择VS调试器,因为那更舒服。