c++ - 进程终止 C++

标签 c++ windows process termination

我有以下问题:我有一个用 C++ 编写的应用程序(永不结束的服务器)作为服务运行,在主线程中还包含 3 个线程(主要执行 IO)。

在主循环中,我捕获了所有可能的异常。

进程终止,主循环或线程本身没有打印任何内容。我在事件日志中看到进程以代码 1000 停止。

  1. Windows 是否像在 unix 中一样创建核心文件?
  2. 如果我从事件日志中得到一个内存地址,是否有任何方法可以知道它发生在应用程序的哪个部分?
  3. 也许这是一个线索:在它发生的同时我启动了另一个应用程序(不同类型)。

最佳答案

尝试将 windbg 设置为事后调试器。

  1. 安装windbg
  2. 从命令行执行“windbg -I
  3. 启动您的应用程序,然后当您的应用程序收到未处理的异常时, windbg 将被激活。
  4. 从 windbg 使用 "kb"或 "!uniqstack" 查看堆栈跟踪。

    look here for more commands.
    看看here如何分析。

并尝试使用 SEH:

#include "windows.h"
#include "stdio.h"

DWORD FilterFunction() 
{ 
 printf("you will see this message first.\n");
 return EXCEPTION_EXECUTE_HANDLER; 
} 


int main(char** argv, int c)
{
 __try
 {
  int this_will_be_zero = (c == 9999);
  int blowup = 1 / this_will_be_zero;
 }
 __except ( FilterFunction()) 
 {
  printf("you will see this message\n");
 }

 return 0;
}

关于c++ - 进程终止 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012552/

相关文章:

c++ - netbeans: 'max' 未在此范围内声明

c++ - 我如何处理算术溢出?

windows - imageMagick 的内存问题?

c++ - CreateProcess 和命令行参数

linux - 用于检查进程并在未找到时重新启动程序的脚本

c++ - 如何在不使用 'L' 和 'R' 方向数组的情况下构建二叉树

css - Windows 上的 Chrome 中的日期输入宽度

c - 跟踪进程的执行

.net - 如何检查程序是否使用 .NET?

c++ - 隐藏的 QMainWindow : application crashes after QMessageBox is displayed 问题