如何执行下一个内部命令列表,然后执行另一个命令?

土豆

当我在GDB中设置断点并将其附加到命令列表时,如果我在此命令列表中执行“下一个”,则以下命令将被忽略,这是正常的(请参阅https://sourceware.org/gdb/当前/onlinedocs/gdb/Break-Commands.html#Break-Commands)。

但是,对我来说,克服此限制可能非常有用...因此,是否可以在命令块以及以下命令中执行“下一个”?

例如:

break 8
  commands
    next
    set i = i+1
    continue
  end
斯科特

您不能next不能cont从断点命令列表中获取信息,但是可以在Python中编写“停止事件处理程序”,然后从那里恢复劣等的执行。请参见下面的独立示例:

越野车

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    i = atoi(getenv("i"));

    if (i > 0) {
        i++;
    } else {
        i--;
    }
    printf("i: %d\n", i);
    return 0;
}

条件数据库中的下一个中断

set confirm 0
set python print-stack full

python import gdb

file buggy

break 8
python
conditional_bpnum = int(gdb.parse_and_eval('$bpnum'))
def stop_handler(event):
    if not isinstance(event, gdb.BreakpointEvent):
        return
    if conditional_bpnum not in set(x.number for x in event.breakpoints):
        return
    gdb.write('i: %d\n' % (gdb.parse_and_eval('i'),))
    gdb.execute('next')
    gdb.write('GDB: incrementing "i" from debugger\n')
    gdb.execute('set variable i = i+1')
    gdb.execute('continue')

gdb.events.stop.connect(stop_handler)
end

run
quit

样品会议

$ gcc -Os -g3 buggy.c -o buggy
$ i=0 gdb -q -x next-after-break-on-conditional.gdb
Breakpoint 1 at 0x4004e3: file buggy.c, line 8.

Breakpoint 1, main () at buggy.c:9
9           i++;
i: 0
11          i--;
GDB: incrementing "i" from debugger
i: 1
[Inferior 1 (process 7405) exited normally]

实施须知

stop_handler()GDB停止时将调用,因此您必须在发出命令之前测试GDB在特定断点处是否停止。

如果我使用进行编译-O3则会得到可怕的“值已被优化”错误,i并且set variable i = i+1将失败。因此,请照常注意这一点。(Fedora 21上的gcc-4.9.2,gdb-7.8.2,x86-64)

参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何执行下一个内部命令列表,然后执行另一个命令?

来自分类Dev

ProcessBuilder从字符串列表中执行一个命令,但不执行下一个命令。

来自分类Dev

等待特定的响应,然后执行下一个命令

来自分类Dev

如果先前执行失败,如何执行下一个批处理Windows命令?

来自分类Dev

如何在执行下一个命令之前等待并行命令完成(Shell脚本)

来自分类Dev

在另一个命令中执行命令

来自分类Dev

如何从一个Docker容器执行命令到另一个

来自分类Dev

以另一个用户的身份执行历史命令

来自分类Dev

当另一个用户执行Alias命令失败

来自分类Dev

从另一个命令执行一个命令

来自分类Dev

Bash脚本从文件执行命令,但如果取消则跳到下一个

来自分类Dev

Javascript在执行下一个命令之前不会等待JQuery动画完成

来自分类Dev

如果find为空,则不执行下一个命令(xargs --no-run-if-empty)

来自分类Dev

Javascript在执行下一个命令之前不会等待JQuery动画完成

来自分类Dev

使用另一个嵌套的 foreachloop 继续执行 foreachloop 中的下一个循环

来自分类Dev

如何查看在另一个shell中执行的命令?

来自分类Dev

如何使用Java中的另一个程序执行cmd命令

来自分类Dev

如何查看在另一个shell中执行的命令?

来自分类Dev

使用awk或类似方法在另一个命令的输出中查找下一个单词

来自分类Dev

如何确保执行了SQL语句,然后才开始下一个代码步骤

来自分类Dev

如何等待截击响应完成然后执行下一个方法

来自分类Dev

Laravel:执行一个查询更新,然后,如果成功,则执行下一个,否则,都不执行

来自分类Dev

在tcsh中,我如何派生多个shell命令,等到它们全部完成,然后再执行另一个命令?

来自分类Dev

防止在执行另一个命令时挂起的命令?

来自分类Dev

如果另一个命令成功,则执行命令?

来自分类Dev

在另一个终端中执行命令并关闭它而不杀死命令

来自分类Dev

Ansible:执行命令输出,转换成另一个命令

来自分类Dev

if_POST然后执行一个或多个命令

来自分类Dev

如何在执行另一个命令时中断discord.py命令中的循环?

Related 相关文章

  1. 1

    如何执行下一个内部命令列表,然后执行另一个命令?

  2. 2

    ProcessBuilder从字符串列表中执行一个命令,但不执行下一个命令。

  3. 3

    等待特定的响应,然后执行下一个命令

  4. 4

    如果先前执行失败,如何执行下一个批处理Windows命令?

  5. 5

    如何在执行下一个命令之前等待并行命令完成(Shell脚本)

  6. 6

    在另一个命令中执行命令

  7. 7

    如何从一个Docker容器执行命令到另一个

  8. 8

    以另一个用户的身份执行历史命令

  9. 9

    当另一个用户执行Alias命令失败

  10. 10

    从另一个命令执行一个命令

  11. 11

    Bash脚本从文件执行命令,但如果取消则跳到下一个

  12. 12

    Javascript在执行下一个命令之前不会等待JQuery动画完成

  13. 13

    如果find为空,则不执行下一个命令(xargs --no-run-if-empty)

  14. 14

    Javascript在执行下一个命令之前不会等待JQuery动画完成

  15. 15

    使用另一个嵌套的 foreachloop 继续执行 foreachloop 中的下一个循环

  16. 16

    如何查看在另一个shell中执行的命令?

  17. 17

    如何使用Java中的另一个程序执行cmd命令

  18. 18

    如何查看在另一个shell中执行的命令?

  19. 19

    使用awk或类似方法在另一个命令的输出中查找下一个单词

  20. 20

    如何确保执行了SQL语句,然后才开始下一个代码步骤

  21. 21

    如何等待截击响应完成然后执行下一个方法

  22. 22

    Laravel:执行一个查询更新,然后,如果成功,则执行下一个,否则,都不执行

  23. 23

    在tcsh中,我如何派生多个shell命令,等到它们全部完成,然后再执行另一个命令?

  24. 24

    防止在执行另一个命令时挂起的命令?

  25. 25

    如果另一个命令成功,则执行命令?

  26. 26

    在另一个终端中执行命令并关闭它而不杀死命令

  27. 27

    Ansible:执行命令输出,转换成另一个命令

  28. 28

    if_POST然后执行一个或多个命令

  29. 29

    如何在执行另一个命令时中断discord.py命令中的循环?

热门标签

归档