linux下调试办法

一:starce
1: 系统调用
可以跟踪一个程序的执行的全过程,对于学习内存管理来说是很好的学习途径
执行语句分析:
zhao@zhao:~/ming/543390/charpter05$ ./0501
8
8
zhao@zhao:~/ming/543390/charpter05$ strace ./0501
execve("./0501", ["./0501"], [/* 22 vars */]) = 0 //创建子进程并载入执行程序
brk(0) = 0x25bf000 //进程的初始地址
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
//调用access函数检验/etc/ld.so.nohwcap是否存在
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efd85da6000
//使用mmap函数进行匿名内存映射,以此来获得8192 B内存空间,起始地址 0x7efd85da6000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
//调用open函数尝试打开文件,返回的文件描述符为3
fstat( 3 , {st_mode=S_IFREG|0644, st_size=128075, ...}) = 0
//使用fstat函数获得/etc/ld.so.cache文件信息。
mmap(NULL, 128075, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7efd85d86000
//调用mmap函数将/etc/ld.so.cache文件映射到内存
close(3) = 0
//关闭文件描述符3指向的文件
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \235\10\0\0\0\0\0"..., 832) = 832
//调用open和read,从/usr/lib/x86_64-linux-gnu/libstdc++.so.6该libc库文件中读取832字节,即读取//elf头信息。这里是获得进程的进入点!<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值