确定程序是否崩溃
Determine if program crashed
可能重复:
检测.NET 中的进程崩溃
我正在编写一个c#程序,它必须确定另一个c++游戏程序(我们称之为Foobar)是否崩溃。当FooBar程序崩溃时,它会用MessageBox通知用户崩溃的消息,如果你确定窗口,程序就会关闭。所以我想如果这个消息框打开/激活,我可以确定程序是否崩溃。问题我不知道怎么做。或者,如果你想到了其他更好的解决方案,请与我分享。
编辑:我不能编辑C++程序,而且它总是有崩溃的可能。我只需要知道是不是真的。
在.NET.中检测进程崩溃的重复
心跳可能是一条路,但还有另一条路。
当进程崩溃时,Windows首先检查系统上是否配置了实时调试器。如果是这样,您可以让调试器在进程崩溃之前将自己附加到进程上。通常,您会使用此功能在进程崩溃时生成内存转储。无论附加什么调试器,都可以知道崩溃进程的PID和名称。您可以利用现有调试工具(如ADPlus)的功能,也可以编写自己的程序,告诉Windows这是您的实时调试器,应该在进程崩溃时运行。我相信您可以专门为任何进程名称设置JIT调试器。
请参阅http://msdn.microsoft.com/en-us/library/5hs4b7a6(v=VS.80).aspx
我认为,如果您将HKLM\Software\Microsoft\Windows NT\Current Version\AeDebug\Degger注册表项设置为"DirectoryOfYourProgram\YourProgram.exe"-p%ld,其中YourProgram.exe需要一个带有-p标志的PID,则当进程崩溃时,您的程序将被调用并传递正确的PID。
如果您可以访问这两个应用程序的代码,您可以设置从c++应用程序到c#应用程序的心跳消息,并在心跳停止时执行任何操作。对于通信,你需要一些类似命名管道或类似的东西。或者,您的c++可以定期写入一个文件,您的c#可以使用文件监控来检测对该文件的更新。
- 包含未定义行为的源代码使编译器崩溃是否合法?
- 是否有可能存在不会崩溃程序的内存问题
- 是否可以以编程方式创建迷你转储文件而不会崩溃?
- 如果构造函数从调用到 std::make_shared 崩溃,GDB 是否可以显示崩溃的详细信息
- Windows C++程序中的访问冲突是否总是立即崩溃
- 故障转储文件是否需要崩溃时正在运行的本地文件
- 是否可以在程序崩溃后执行代码?
- 是否有支持C++和C#混合应用程序的崩溃报告服务
- 对 NULL 值的按位操作是否会使C++中的代码崩溃
- 确定程序是否崩溃
- C++程序在使用 if 条件检查指针是否为 NULL 时崩溃
- 是否有任何清单可以避免在使用 OpenCV SVM 时崩溃
- 如果测试程序崩溃,Valgrind报告是否可信
- 正在检查程序是否崩溃
- 如果机器立即崩溃,那么fflush()在将数据保存到磁盘方面是否与fclose()一样好?
- 如何知道当程序在运行时崩溃时是否是内存错误"the program has stopped working"
- 一种检测进程是否崩溃(或停止)的简单方法
- 我的win32程序是否有办法告诉它启动的子进程已经崩溃(而不仅仅是退出)?
- c++程序在崩溃时是否自动释放内存?
- 用于定义一个数字是否为素数的函数会导致c++程序崩溃