繁体   English   中英

分析Linux中C程序的堆栈框架

[英]Analysing stack frame of C program in Linux

我想问一下gcc for Linux是否有任何选项可以调试用C编写的给定程序的堆栈框架?

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

我有一个程序可以覆盖导致SEGV的堆栈,我想从同一程序中对其进行分析。 首先,我想查找有问题的过程,然后计划查找错误的位置。

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

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

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

如果您搜索gcc assembly output则有很多示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM