我正在使用Eclipse CDT开发一个项目,并且遇到了似乎是无限循环的问题。
从Eclipse中调试应用程序时,当进程异常终止(segfault是最常见的中断)或遇到断点时,我可以轻松地检索和检查调用堆栈。
如果我遇到无限循环而又不知道正在循环的语句,那么堆栈跟踪将使我对要查看的功能有一个大概的了解。我如何告诉Eclipse让我立即了解该进程正在执行的堆栈跟踪(在没有断点或段错误的情况下)?
到目前为止,我的技巧是
killall -SIGSEGV $process_name
(替换$process_name
为您要调试的进程的名称)。这将导致该进程表现为已出现段错误,即停止它并为您提供当时该进程正在执行的任何内容的调用堆栈。
有没有更干净的方法可以达到相同目的?
较干净的方法是:
killall -SIGCONT $process_name
这将向CONT
过程发送(继续)信号。该信号的主要目的是在发送STOP
信号后继续进行处理。当发送到不停止的进程时,它什么也不做。
但是,如果正在Eclipse中调试进程(而调试又依赖于gdb进行调试),则这将停止执行并导致显示堆栈跟踪。
与之不同-SIGSEGV
(或其他告诉进程转储其内核或终止的信号),您可以单击Resume按钮并继续运行您的进程。UX接近断点后将发生的情况,除了Eclipse将报告挂起执行的其他原因。
请注意,如果您正在执行任何会干扰信号处理过程的操作,则可能无法按预期进行。
不过,不知道是否可以从Eclipse UI中触发任何东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句