Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
使用Eclipse CDT在无限循环期间获取堆栈跟踪_Eclipse_Debugging_Eclipse Cdt_Infinite Loop - Fatal编程技术网

使用Eclipse CDT在无限循环期间获取堆栈跟踪

使用Eclipse CDT在无限循环期间获取堆栈跟踪,eclipse,debugging,eclipse-cdt,infinite-loop,Eclipse,Debugging,Eclipse Cdt,Infinite Loop,我正在使用EclipseCDT进行一个项目,遇到了一个似乎是无限循环的问题 在Eclipse中调试应用程序时,当进程异常终止(segfault是最常见的)或遇到断点时,我可以轻松地检索和检查调用堆栈 如果我在不知道哪些语句正在循环的情况下运行到无限循环中,堆栈跟踪将使我大致了解要查看的函数。我如何告诉Eclipse获取进程正在执行的任何操作的堆栈跟踪(在没有断点或segfault的情况下) 到目前为止,我对此的看法是 killall -SIGSEGV $process_name (将$proc

我正在使用EclipseCDT进行一个项目,遇到了一个似乎是无限循环的问题

在Eclipse中调试应用程序时,当进程异常终止(segfault是最常见的)或遇到断点时,我可以轻松地检索和检查调用堆栈

如果我在不知道哪些语句正在循环的情况下运行到无限循环中,堆栈跟踪将使我大致了解要查看的函数。我如何告诉Eclipse获取进程正在执行的任何操作的堆栈跟踪(在没有断点或segfault的情况下)

到目前为止,我对此的看法是

killall -SIGSEGV $process_name
(将
$process\u name
替换为您尝试调试的进程的名称)。这将导致进程的行为就像它已发生故障一样,即停止它并向您提供进程当时正在执行的任何内容的调用堆栈


有没有更干净的方法达到同样的效果?

稍微干净一点的方法是:

killall -SIGCONT $process_name
这会向进程发送一个
CONT
(continue)信号。此信号的主要目的是在发送了
停止
信号后继续处理。当发送到未停止的进程时,它不会执行任何操作

但是,如果进程正在Eclipse中调试(Eclipse反过来依赖gdb进行调试),这将停止执行并显示堆栈跟踪

-SIGSEGV
(或其他通知进程转储核心或终止的信号)不同,您可以点击Resume按钮继续运行进程。UX接近于遇到断点后的情况,但Eclipse会报告暂停执行的不同原因

请注意,如果您正在做的任何事情会干扰您的进程的信号处理,那么这可能无法按预期工作

但是,不知道是否有任何东西可以从EclipseUI触发