我想问一下gcc for Linux是否有任何选项,它可以调试用C编写的程序的给定过程的堆栈框架?
我知道我可以使用-ggdb3 gcc参数编译程序,它可以让我找出程序中的符号。但是,是否有任何方法可以找出如何通过(通过堆栈或寄存器)传递过程参数?
我有一个程序可以覆盖导致SEGV的堆栈,我想从同一程序中对其进行分析。首先,我想找到有问题的过程,然后计划寻找错误的位置。
答案 0 :(得分:0)
您有一些选择。我更喜欢查看实际生成的代码,因为它可以准确地告诉我正在执行什么。使用gcc或g ++进行编译时,可以获得此信息。这将创建后缀为.S
的文件。
例如,gcc -S helloworld.c
还将创建一个名为helloworld.S
的文件,其中包含汇编代码。
如果您没有源代码,则可以使用objdump之类的工具将二进制代码转换为反汇编。
如果您搜索gcc assembly output