gpt4 book ai didi

c - 分析Linux中C程序的栈帧

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:11 25 4
gpt4 key购买 nike

我想问一下 gcc for Linux 是否有任何选项允许调试用 C 编写的程序的给定过程的堆栈帧?

我知道我可以使用 -ggdb3 gcc 参数编译我的程序,它允许我找出这个程序中的符号是什么。但是有什么方法可以找出过程参数是如何传递的(通过堆栈或寄存器)?

我有一个程序会覆盖导致 SEGV 的堆栈,我想从同一个程序中分析它。首先我想找到有问题的过程,然后我打算找到错误的地方。

最佳答案

您有几个选择。我更喜欢查看实际生成的代码,因为它准确地告诉我正在执行什么。你可以在用 gcc 或 g++ 编译时得到这个。这将创建一个带有 .S 后缀的文件。

例如,gcc -S helloworld.c 还将创建一个名为 helloworld.S 的文件,其中包含汇编代码。

如果您没有源代码,您可以使用 objdump 等工具将二进制代码转换为反汇编代码。

如果你搜索 gcc assembly output 有很多例子

关于c - 分析Linux中C程序的栈帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52778465/

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