GDB 断点不会在 strcpy 函数处停止 [已关闭]

GDB breakpoint doesn't stop at strcpy function [closed]

提问人:strjak 提问时间:11/14/2023 最后编辑:ks1322strjak 更新时间:11/14/2023 访问量:90

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

8天前关闭。

我正在通过“Hacking Art of Exploitation”一书学习 C 和汇编语言(是的,很古老)。

我正在尝试调试一个使用 GDB 打印“Hello world”的简单程序,但在创建断点时,应该在函数上停止的第二个断点不起作用。这是一张带有代码和示例的图像。strcpy

C 程序集 GDB 断点

评论

1赞 Craig Estey 11/14/2023
不应延迟断点。拆卸并查看通话。它可以是(例如)或内联的。确保你正在编译strcpymain__builtin_strcpy-O0
2赞 Peter Cordes 11/14/2023
另外,不要发布文字图片。我打算看看这是如何在 godbolt.org 上编译的。 或者其他什么,但我不想费心打字。-O0-O2 -fno-builtin-strcpy
1赞 Craig Estey 11/14/2023
即使关闭了优化,代码也是内联的。要获得对 的真正调用,[如@PeterCordes建议] 编译 请注意,[在我的系统上],调用是 .但是,一个简单的方法就可以了。strcpystrcpy-O0 -fno-builtin-strcpystrcpy@pltb strcpy
2赞 Craig Estey 11/14/2023
@PeterCordes确实处理了这个问题。我运行了代码(在 linux 下),因为它停在了真实/最终符号,它是用 asm 编写的(带有一堆 )并且做了 、 、 等,所以它绝对不仅仅是一个跳转表条目。如果确实想停止 PLT 跳转条目,显式会这样做。gdbb strcpy__strcpy_sse2_unaligned#ifdefpxorpcmpeqbpmovmskbb strcpy@plt
1赞 Andrejs Cainikovs 11/14/2023
这回答了你的问题吗?无法使用 GDB 单步执行 string.h 函数

答: 暂无答案