Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windbg exe在几个小时后停止执行_Windbg_Sysinternals - Fatal编程技术网

Windbg exe在几个小时后停止执行

Windbg exe在几个小时后停止执行,windbg,sysinternals,Windbg,Sysinternals,我有一个exe收集一些信息,一旦收集到的信息保存在本地机器上。我已经管理了循环,这样它将在无限的时间内完成相同的任务 但是exe在几个小时(大约5-6小时)后停止执行,它既没有崩溃也没有出现异常 我试图在windbg中找到原因,但没有任何例外 现在,有人能帮我发现问题吗 我应该使用sysinternal工具还是其他调试器工具 我突然想到一些可能会扼杀你的程序的事情: 内存不足情况 堆栈溢出 整数换行循环计数器 众所周知,永远运行的程序很难正确编写,因为您的内存管理必须是完美的。但是,如果没有

我有一个exe收集一些信息,一旦收集到的信息保存在本地机器上。我已经管理了循环,这样它将在无限的时间内完成相同的任务

但是exe在几个小时(大约5-6小时)后停止执行,它既没有崩溃也没有出现异常

我试图在windbg中找到原因,但没有任何例外

现在,有人能帮我发现问题吗


我应该使用sysinternal工具还是其他调试器工具

我突然想到一些可能会扼杀你的程序的事情:

  • 内存不足情况
  • 堆栈溢出
  • 整数换行循环计数器

众所周知,永远运行的程序很难正确编写,因为您的内存管理必须是完美的。但是,如果没有更多信息,就不可能回答这个问题。

如果可执行文件不是您的,并且是活动的C/C++代码,您可能希望捕获第一次异常转储或使用Windows调试工具(如DebugDiag或ADPlus)监视可执行文件


或者,如果您有权访问可执行文件的开发人员,他们可能会向exe添加更多跟踪(ETW或其他),以了解代码中可能的故障点

内存不足
堆栈溢出
会触发异常?!不过,循环计数器是可能的。要操作:问题是它是热堆栈还是冷堆栈,可以使用您选择的任何taskmonitor轻松查看。进程是100%运行还是空闲?Windbg是执行此任务的合适工具。您是否尝试过
analyze-v-hang
?你能发布转储文件和/或结果吗?这取决于你的程序是用什么语言编写的。因为他使用的是WEBBG,我怀疑是C或C++(但在问题中没有指定)。这些东西都不会触发C++中的异常,C甚至没有例外。TX,我不知道。快一点的话,似乎很快就会触发segfault,不是吗?应用程序很快就会死掉。不幸的是,在堆栈溢出之后,我找不到太多关于未处理的应用程序如何进展的信息。这完全取决于程序的编写方式,没有更多信息,我无法得出结论性的回答。如果它没有崩溃,那么它可能挂起在某个地方,比如死锁。将WinDbg连接到它并选中“!uext.runaway f”。是否有线程运行时间过长?此外,如果您能说明应用程序是本机应用程序还是托管应用程序,也会有所帮助。它可能已挂起,或者您的循环遇到了无法正确处理的情况,因此将继续无限期地不做任何事情。您可以连接windbg并执行
!锁定
!cs-s-l-o
查看是否有任何关键部分被锁定,如果有,查看哪些线程正在等待哪些关键部分,然后检查这些线程的调用堆栈。您还可以转储所有调用堆栈并检查它们
~*kb
如果您确定既没有引发崩溃也没有引发异常,我建议“监视”程序退出点。您可以在那里放置断点或放置一些调试消息,如控制台输出或Windows MessageBox。