gpt4 book ai didi

GDB:使用涉及前一帧变量的条件设置复杂断点

转载 作者:行者123 更新时间:2023-12-01 16:11:18 27 4
gpt4 key购买 nike

是否可以设置一个复杂的断点,其条件涉及检查传递给外部函数(框架)的参数。

例如。

  1 #0  sample::_processMessage (this=0xa5c8c0, data=0x7fffe5ae31db "\027w\270߸\023\032\212\v", line=0x7fffe4799db8 "224.4.2.197:60200", should_process=true) a sample.cpp:426
2 #1 0x00007ffff682f05d in sample::_process (this=0xa5c8c0, should_process=true, line=0x7fffe4799db8 "224.4.2.197:60200", data=0x7fffe5ae31db "\027w\270߸\023\032\212\v", sn=31824) a sample.cpp:390
3 #2 0x00007ffff6836744 in sample::drain (this=0xa5c8c0, force=true) at sample.cpp:2284
4 #3 0x00007ffff682ed81 in sample::process (this=0xa5c8c0, mdData=0x7fffe67914e0) at sample.cpp:354

这里我想在sample.cpp:356上设置一个断点,该断点位于函数process-frame#3中,如果遇到断点时的 _process 或帧 #1 有 sn == 31824

所以实际上断点是在函数_process处,但我想暂停函数进程中的执行

提前致谢

最佳答案

我不知道是否可以创建引用外部框架的条件断点,但您可以使用断点命令来实现类似的结果。

这是一个 gdb session 示例:

(gdb) break some-location
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>silent
>up
>if (sn != 31824)
>continue
>end
>end

现在,每次gdb命中断点时,它都会自动向上移动一帧,检查sn,如果值不正确则继续。这不会比条件断点慢任何(或慢很多),唯一真正的缺点是每次命中断点时它都会打印出一行,即使 gdb 然后继续。

命令列表中的silent会减少遇到断点时产生的一些正常输出,可以将其删除以获得更详细的体验。

关于GDB:使用涉及前一帧变量的条件设置复杂断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989507/

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