gpt4 book ai didi

gdb - 如何在gdb中的 “something is printed to the terminal”上设置断点?

转载 作者:行者123 更新时间:2023-12-03 10:38:31 25 4
gpt4 key购买 nike

我想知道从大型应用程序内部的哪个位置打印某些消息。该应用程序太旧了,以至于它使用所有可能的方式将文本打印到终端。例如printf(),fprintf(stdout等)。

我编写了一个在write()系统调用上放置一个断点的命令,但是由于各种同时使用write()的文件I / O操作,我也充满了太多的断点停止。

因此,基本上我希望gdb在程序向终端打印任何内容时停止,但同时我不希望gdb在程序向文件中写入内容时停止。

最佳答案

使用检查第一个参数的条件断点。在64位x86系统上,条件是:

(gdb)b如果1 == $ rdi则写

在32位系统上,它更复杂,因为参数在堆栈上,这意味着您需要将$ esp强制转换为int *并为fd参数建立索引。此时的堆栈具有返回地址,长度,缓冲区以及最后的fd。

硬件平台之间的差异很大。

关于gdb - 如何在gdb中的 “something is printed to the terminal”上设置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538463/

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