社区
Linux/Unix社区
帖子详情
如何使用GDB查看函数的返回值?
smannue
2010-08-03 11:35:02
1
2 #include <stdio.h>
3 #include <string.h>
4
5 int main()
6 {
7 char str1[] = "hello";
8 char str2[] = "hello world";
9
10 if (strlen(str1) || strlen(str2))
11 return 1;
12
13 return 0;
14 }
如何在单步调试中查看那两个strlen的返回值?
...全文
572
6
打赏
收藏
如何使用GDB查看函数的返回值?
1 2 #include 3 #include 4 5 int main() 6 { 7 char str1[] = "hello"; 8 char str2[] = "hello world"; 9 10 if (strlen(str1) || strlen(str2)) 11 return 1; 12 13 return 0; 14 } 如何在单步调试中查看那两个strlen的返回值?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
smannue
2010-08-04
打赏
举报
回复
看来GDB也有相当不足的地方啊……要是判断语句里多几个函数条件不就完蛋了,只能用鼠标了,想用纯键盘操作看来是不可行了……可惜啊
zhongxiutao123
2010-08-04
打赏
举报
回复
下断点的位置有限制
这的确是一个可以改进的地方
brookmill
2010-08-04
打赏
举报
回复
可以考虑用stepi命令进入strlen函数,然后用finish命令停在strlen结束的地方,然后用info registers eax看他的返回值。
不过这样太累了,还不如直接 print strlen(str1)
帅得不敢出门
2010-08-04
打赏
举报
回复
下断点的位置有限制
这的确是一个可以改进的地方
louyong0571
2010-08-04
打赏
举报
回复
print strlen(str1)直接看
断点到到strlen函数里面去看
可以转换成汇编单步跟
方法多着呢
brookmill
2010-08-03
打赏
举报
回复
x86的整数返回值保存在eax,所以可以考虑 info registers eax
但是像这样一行两个函数,就不好办了……
gdb
修改
函数
返回值
昨天在测试同事的一段代码时,
返回值
没有保存到变量中,而是直接进行判断的,类似这样: int check_state(); // a function from other library, didn't have it's definition, just a declaration. int func1() { if(!ch
用
GDB
跟踪汇编代码排查
返回值
原创文章,转载请注明出处~ 平台为兆芯x86-64 CPU 前边《嵌入式汇编实现系统调用-rename》中有发现用libc的rename
函数
实现的时候,如果原本的文件不存在,会返回-1(Operation not permitted),为了找到原因,我们用
GDB
跟踪汇编代码执行过程。 1.首先编译过程加入参数-g方便
gdb
调试: root@henry-002:/usr/test_code# gcc rename_libc.c -o rename_libc_debug --static -g 2.
GDB
数据
查看
https://www.cnblogs.com/TianFang/archive/2013/01/21/2869474.html
查看
栈信息 当程序被停住了,首先要确认的就是程序是在哪儿被断住的。这个一般是通过
查看
调用栈信息来看的。在
gdb
中,
查看
调用栈的命令是backtrace,可以简写为bt。 (
gdb
) bt #0 pop () at stack.c:10 ...
GDB
修改当前判断
函数
的
返回值
(即修改寄存器的值)的方法
工作中遇到的问题: 在
GDB
调试时要进入下边该判断后边的
函数
,而m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen)的
返回值
是false,所以需要修改该
函数
的
返回值
, --------------------------------------------------------------------------------------...
GDB
完全手册(下)
接着上篇文章来看下
GDB
的
使用
:
查看
栈信息 ————— 当程序被停住了,你需要做的第一件事就是
查看
程序是在哪里停住的。当你的程序调用了一个
函数
,
函数
的地址,
函数
参数,
函数
内的局部变量都会被压入“栈”(Stack)中。你可以用
GDB
命令来
查看
当前的栈中的信息。 下面是一些
查看
函数
调用栈信息的
GDB
命令: backtrace bt 打印当前的
函数
调用栈的所有信息。如: (
gdb
)...
Linux/Unix社区
23,127
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章