问答详情
源自:3-2 使用gdb调试案例

linux c语言

为什么使用gdb要先进入change函数不能才能使用bt看到两个栈,如果跳出change就只能看见main的栈了,还有s到底怎么用,是查看上一级的函数么

提问者:qq_人生若如初见_5 2016-11-21 20:37

个回答

  • 果子李
    2016-11-23 11:02:33
    已采纳

    1. 栈用来记录代码运行到断点处时,此时正在运行的函数的状态信息,比如:函数形参、局部变量值等。只有当你运行某个函数时,栈才会把这个函数的相关信息存储起来。进入change函数,就会把change函数的相关状态保存,退出change函数时,就会将保存的信息清除

    2. 如果main函数的某行代码是调用change函数,s就会进入change函数内部;如果没有s命令,就直接调用change函数且返回,进入main代码行的下一行。