如何解决如何在gdb中调用functionvoid
我是一个完整的初学者,可以逆转英语。 最近,我一直在遍历gdb以及如何调试程序。
如果它很简单,我会怀疑我
#include <stdio.h>
#include <stdlib.h>
int flag(void){
puts("okay you got this");
}
int main(void){
puts("nope try again");
}
所以我成功地编译了该程序,当我尝试运行该程序时,它给了我主要功能输出
nope try again
所以现在我该如何调用标志函数以在gdb中给出“好了,你得到了”的输出结果。我尽了最大努力,浏览了博客以获取答案,但最终以失败告终病得到解决方案,并请我建议我缺少什么,以及我需要了解的工作原理
解决方法
您的意思是如何调用flag()
并跳过puts
中的main
?,在这种情况下:
(gdb) break main
(gdb) run
(gdb) print flag()
okay you got this
(gdb) break 10
(gdb) jump 10
(gdb) quit
,
函数flag
没有被调用,很有可能它不会在不需要的情况下出现在可执行文件中
这被称为死代码消除
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。