开发中的辅助工具
Posted 阿弥陀佛.a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发中的辅助工具相关的知识,希望对你有一定的参考价值。
演示:
当前有func.c test.c
这里的test.out必须是带调试信息的(gcc -g)
此时会出现core文件:
接下来用dmesg查看文件内容:
会有很多信息,但是只用关注最后ip在访问某一个地址发生错误即可
可以看出在调用func.c时出错,错误发生在func.c的第7行
可以看出剔除调试信息后,文件大小明显变小很多
将.o文件删除后做解压实验:
可以看出func文件里有两个标识符
func在代码段,还没链接所以地址不知道,00000000代表相对代码段的地址偏移是这个
g_pointer,00000004代表占4字节内存
最后将两个.o文件链接:
然后:nm test.out:
链接后,地址就可以确定了
虚存地址和加载地址为什么一样?
test.out执行前要创建进程:
- 分配虚存
- 将对应的段从test.out拷贝到虚存中对应的位置,虚地址就代表加载的目标地址(加载地址),加载地址指的是段加载的终点
- 执行应用程序
以上是关于开发中的辅助工具的主要内容,如果未能解决你的问题,请参考以下文章