我想问一下,对于用C编写的程序,有没有允许调试给定程序的堆栈框架的Linux版本的gcc?
我知道我可以用-ggdb3,gcc参数来编译我的程序,它允许我找出这个程序中的符号是什么。但是,有没有什么方法可以找出过程参数是如何传递的(通过堆栈或寄存器)?
我有一个程序,它覆盖了导致SEGV的堆栈,我想从同一个程序中分析它。首先,我想要找到有问题的过程,然后我计划找到错误的位置。
发布于 2018-10-12 20:57:12
你有几个选择。我更喜欢的一种方式是查看实际生成的代码,因为它确切地告诉我正在执行什么。你可以在用gcc或者g++编译的时候得到这个。这将创建一个带有.S
后缀的文件。
例如,gcc -S helloworld.c
还将创建一个名为helloworld.S
的文件,其中包含汇编代码。
如果您没有源代码,可以使用诸如objdump之类的工具将二进制代码转换为反汇编。
如果你搜索gcc assembly output
,会有很多例子
https://stackoverflow.com/questions/52778465
复制相似问题