gpt4 book ai didi

c++ - 获取最后执行的返回语句行

转载 作者:行者123 更新时间:2023-12-03 07:01:05 30 4
gpt4 key购买 nike

是否有可能在 C/C++ 的任何调试器中查看最后一个 return 语句发生的位置?或者甚至是“返回堆栈”,就像调用堆栈一样,但反过来呢?

bool foo(int bar)
{
if(bar == 1) return false;
if(bar == 2) return false;
return true;
}

void baz()
{
bool result = foo(4);
}

因此,在 baz 中调用 foo 之后,您可以看到 foo 中的三个 return 语句中的哪一个被命中。

最佳答案

这是 C/C++ 的一些反向调试器这可以在您的调试 session 中及时退回:

仅限 Linux:
rr from mozilla
开源,真快,记录痕迹小,要记录整个应用

undo reverse debugger
商用,没有rr那么快,记录痕迹小,应用的记录可以从任何地方开始

GDB reverse debugging
来自GNU的标准gdb,可以记录小功能(有限),开始调试,设置断点,然后开始记录直到下一个断点,您可以在这些点之间进行反向调试

未经我测试:
RogueWave TotalView Debugger
商用,带有完整的 IDE

Windows 10(不支持 7)
WinGDB Reverse Debugging
没有测试,不能说太多。它似乎是唯一一个使用 windows 的

补充一点,多线程可以由这些调试器处理,但前提是线程的执行被序列化到一个核心(伪并行化)。您无法反向调试多核多线程应用程序。原因很简单,反向执行必须同步执行的线程,如果两个或多个线程“同时”执行,这是无法做到的。

关于c++ - 获取最后执行的返回语句行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59405172/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com