Linux Program Tools (Linux Binutils)
来源:互联网 发布:thinkphp直播系统源码 编辑:程序博客网 时间:2024/06/16 22:27
一、Linux Binutils
1, 概要:
Linux binutils 是一系列软件开发工具(Tools)的集合,包括连接器(Linker),汇编器(Assembler),以及其他处理对象文件(Object files)及档案文件(Archives files)的工具。可以从ftp://ftp.gnu.org/gnu/binutils/下载工具包。安装Binutils后,就可以使用如下工具:addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and strip。
2, 简介:
2.1 addr2line
将程序地址转换为相应的文件名,源程序行号,甚至所在的函数名。注意,编译时加-g才能正常显示文件名及行号,否则文件名显示为??,行号显示为0(函数名可以正常显示);若连接时加-s, 或用strip去掉可执行文件的符号表,则调用addr2line无法显示正确信息。
2.2 as
汇编器
2.3 c++filt
用C++和Java实现的程序,在编译之后,会重新命名原函数名,方法是在原函数名前后加字母,数字,下划线,美元符或小数点;这个过程称为混淆(Mangling)。而c++filt的功能是Mangling的反向过程,它在当前文件夹下查询包含该符号的可执行文件,然后将混淆后的函数名还原成程序中的原始函数名,称为Demangling。
eg:
//test.c
#include <iostream>
using namespace std;
void Print(char *name)
{
cout << name << ends;
}
void Print(int data)
{
cout << data << endl;
}
int main(int argc, char **argv)
{
Print("John");
Print(100);
return 100;
}
编译连接之后, 用nasm -D test查出两个函数Print在mangling之后的民称分别为:
_Z5PrintPc和_Z5Printi, 执行
c++filt _Z5PrintPc
将会显示
Print(char *)
二、Other Userful Tools
1 Strace:
Trace system call and signals
2 readelf
Display information abut ELF files
3 ldd
Print shell library dependences
1, 概要:
Linux binutils 是一系列软件开发工具(Tools)的集合,包括连接器(Linker),汇编器(Assembler),以及其他处理对象文件(Object files)及档案文件(Archives files)的工具。可以从ftp://ftp.gnu.org/gnu/binutils/下载工具包。安装Binutils后,就可以使用如下工具:addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and strip。
2, 简介:
2.1 addr2line
将程序地址转换为相应的文件名,源程序行号,甚至所在的函数名。注意,编译时加-g才能正常显示文件名及行号,否则文件名显示为??,行号显示为0(函数名可以正常显示);若连接时加-s, 或用strip去掉可执行文件的符号表,则调用addr2line无法显示正确信息。
2.2 as
汇编器
2.3 c++filt
用C++和Java实现的程序,在编译之后,会重新命名原函数名,方法是在原函数名前后加字母,数字,下划线,美元符或小数点;这个过程称为混淆(Mangling)。而c++filt的功能是Mangling的反向过程,它在当前文件夹下查询包含该符号的可执行文件,然后将混淆后的函数名还原成程序中的原始函数名,称为Demangling。
eg:
//test.c
#include <iostream>
using namespace std;
void Print(char *name)
{
cout << name << ends;
}
void Print(int data)
{
cout << data << endl;
}
int main(int argc, char **argv)
{
Print("John");
Print(100);
return 100;
}
编译连接之后, 用nasm -D test查出两个函数Print在mangling之后的民称分别为:
_Z5PrintPc和_Z5Printi, 执行
c++filt _Z5PrintPc
将会显示
Print(char *)
二、Other Userful Tools
1 Strace:
Trace system call and signals
2 readelf
Display information abut ELF files
3 ldd
Print shell library dependences
- Linux Program Tools (Linux Binutils)
- Cannot run program "/home/mohemi/Program/adt-bundle-linux-x86_64-20130729/sdk//tools/emulator": erro
- Cannot run program "/home/mohemi/Program/adt-bundle-linux-x86_64-20130729/sdk//tools/emulator": erro
- Linux二进制实用工具Binutils工具集解析()
- linux tools
- linux tools
- linux tools
- linux tools
- linux tools
- Program Tools
- 解决错误 'Cannot run program "/home/***/android-sdk-linux/platform-tools/adb": error=2
- program linux network
- program linux network
- Linux kernel & module program
- Linux PAM Program
- linux c program link....
- linux socket program
- LINUX Advanced program 有感
- 提高liferay性能
- 委托(2)委托链
- (demo) : jtable的自定义cell
- 如何做好项目经理
- 调试技巧
- Linux Program Tools (Linux Binutils)
- 12.4.9 多文件上传
- 12.5 小结
- LINQ 学习笔记-2
- JAVA如何调用DOS命令(转贴 笔记)
- 直接用List对象进行分页
- 国际:程序员V.S.编程语言:你上“贼船”了吗?
- 世界第一张互联网虚拟大脑结构图
- dup和dup2函数