加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS江苏省泰州市 西门子代理商——西门子华东一级总代理

更新时间
2024-11-16 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍

继续使用backtrace命令查看函数调用帧栈

gdb backtrace gdb

可以看出函数add()被主函数调用,主函数传入的start和end参数值。add()函数的栈帧号为0,主函数的栈帧号为1。

可以继续使用info locals命令查看add()函数中的局部变量的值,也可以使用frame 1命令先选择主函数所在的1号帧栈,再使用info locals命令查看主函数中的局部变量的值:

gdb info locals   0   0 gdb frame 1             add1, 10 gdb info locals   0 gdb

可以看到,add()函数中两个局部变量的值均被默认初始化为0,主函数中的局部变量result也被初始化为0。

如果局部变量默认不是初始化为0,可以在GDB环境下通过set var命令修改变量的值,并查看运行效果。由于程序在本电脑上运行无误,我们现在故意修改sum的初始值为100,并查看Zui终的运行结果:

gdb  var 100 No symbol  in current context. gdb frame 0            start i<end i++ gdb  var 100 gdb print sum   100 gdb info locals   0   100 gdb finish Run till  from  0x000055555555468a in main  at gdbtest.c:14             add1, 10 Value returned is   155 gdb

使用set var sum=100将sum的值修改为100,注意要切换到sum变量所在的帧栈环境中执行,然后可以使用print或info locals命令查看修改后的结果,接着使用finish命令使程序自动运行结果,可以看出Zui终的输出的结果为155,符合预期。Zui后可以使用quit命令退出GDB环境:

gdb quit A debugging session is active.         Inferior  process 31210 will be killed. Quit anyway? y or n y $

键入y确认退出即可。


相关产品

联系方式

  • 电  话:15903418770
  • 联系人:张经理
  • 手  机:15915421161
  • 微  信:15915421161