汇编常用的开发工具

文章参考书籍自:

<<汇编语言程序设计第二章>>: 

汇编语言程序设计

第二章简单介绍了控制单元、执行单元、寄存器和标志

ubuntu下开启core文件:

 ulimit -u limit

 echo "/home/saneri/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

参考文章:

addr2line_markvz的博客-CSDN博客_addr2line

ar 创建修改和展开文件存档

c++filt

#include <stdio.h>
 
class A
{
public:
        int a_func(int a, int b)
        {
                return a+b;
        }
 
        int a_func(int a)
        {
                return a;
        }
};
 
int main()
{
        int aaa = 20;
        printf("aaa is :%d\n", aaa);
 
        A bbb;
        int ccc = bbb.a_func(30, 40);
        printf("ccc is : %d\n", ccc);
 
        int ddd = bbb.a_func(100);
        printf("ddd is : %d\n", ddd);
}

如果我们用nm显示:

zhanglei@ubuntu:~$ nm main2 
0000000000004010 B __bss_start
0000000000004010 b completed.8061
                 w __cxa_finalize@@GLIBC_2.2.5
0000000000004000 D __data_start
0000000000004000 W data_start
00000000000010b0 t deregister_tm_clones
0000000000001120 t __do_global_dtors_aux
0000000000003db8 d __do_global_dtors_aux_fini_array_entry
0000000000004008 D __dso_handle
0000000000003dc0 d _DYNAMIC
0000000000004010 D _edata
0000000000004018 B _end
00000000000012c8 T _fini
0000000000001160 t frame_dummy
0000000000003db0 d __frame_dummy_init_array_entry
00000000000021c4 r __FRAME_END__
0000000000003fb0 d _GLOBAL_OFFSET_TABLE_
                 w __gmon_start__
000000000000202c r __GNU_EH_FRAME_HDR
0000000000001000 t _init
0000000000003db8 d __init_array_end
0000000000003db0 d __init_array_start
0000000000002000 R _IO_stdin_used
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
00000000000012c0 T __libc_csu_fini
0000000000001250 T __libc_csu_init
                 U __libc_start_main@@GLIBC_2.2.5
0000000000001169 T main
                 U printf@@GLIBC_2.2.5
00000000000010e0 t register_tm_clones
                 U __stack_chk_fail@@GLIBC_2.4
0000000000001080 T _start
0000000000004010 D __TMC_END__
0000000000001232 W _ZN1A6a_funcEi
0000000000001216 W _ZN1A6a_funcEii
zhanglei@ubuntu:~$ 

如果用c++filt 显示的就更详细

zhanglei@ubuntu:~$ nm main2 |c++filt
0000000000004010 B __bss_start
0000000000004010 b completed.8061
                 w __cxa_finalize@@GLIBC_2.2.5
0000000000004000 D __data_start
0000000000004000 W data_start
00000000000010b0 t deregister_tm_clones
0000000000001120 t __do_global_dtors_aux
0000000000003db8 d __do_global_dtors_aux_fini_array_entry
0000000000004008 D __dso_handle
0000000000003dc0 d _DYNAMIC
0000000000004010 D _edata
0000000000004018 B _end
00000000000012c8 T _fini
0000000000001160 t frame_dummy
0000000000003db0 d __frame_dummy_init_array_entry
00000000000021c4 r __FRAME_END__
0000000000003fb0 d _GLOBAL_OFFSET_TABLE_
                 w __gmon_start__
000000000000202c r __GNU_EH_FRAME_HDR
0000000000001000 t _init
0000000000003db8 d __init_array_end
0000000000003db0 d __init_array_start
0000000000002000 R _IO_stdin_used
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
00000000000012c0 T __libc_csu_fini
0000000000001250 T __libc_csu_init
                 U __libc_start_main@@GLIBC_2.2.5
0000000000001169 T main
                 U printf@@GLIBC_2.2.5
00000000000010e0 t register_tm_clones
                 U __stack_chk_fail@@GLIBC_2.4
0000000000001080 T _start
0000000000004010 D __TMC_END__
0000000000001232 W A::a_func(int)
0000000000001216 W A::a_func(int, int)

objdump 查看目标字节信息:

objdump 选项 文件

readelf 显示目标文件信息

win+R 然后 cmd、powershell(更强大)
gcc是GUN C和C++编译器,我们通常使用GCC时,编译器会依次做如下工作:preprocess(预处理),compilation(编译),assembly(汇编),link(链接)。

我们可以使用gcc来生成会变文件

gcc -S main.c 可以生成汇编文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【使用方法】 一、安装 1.请按照步骤正确安装。 2.安装好后你可以到"工具"—>"选项"中进行配置,比如软件使用过程中经常会出现一些提示,对于刚接触本系 统的人来说可能非常有用,但是你用了一段时间以后就会觉得这些提示十分多余,这时你就可以把"选项"中的" 显示消息提示"前面的小勾去掉,这样下次就不会出现这些提示了。 二、使用过程中请注意以下几点: 1.汇编源文件保存时的路径及文件名请不要有汉字,包括"环境配置"中的编译程序存放路径,否则编译连接等可 能会遇到一些问题 2.源文件名请不要太长,一般文件名(前缀部分)长度超过8个字符可能就会出现一些问题 3.都说初学者不应该使用集成环境写程序,因为他们一离开这个环境就不知道怎么办了,像编译、连接、调试以 及运行,你在集成环境中只要点点按钮就行了,不会去了解它的后台是如何工作、各种文件是怎么产生的。但是 在本软件中就不一样了,在编译程序所在的文件夹中会有一些bat(批处理文件),这里都是点击相应的按钮产生的,你可以打开看看,一个obj或exe文件是如何产生的你就会一目了然了。 4.程序在每次编译时都会将编译器返回的结果保存在"c:va3.txt"中,你可以在需要的时候查看 三、关于本软件的一些命令(跟汇编基本没关系。方法:直接在文本框中输入然后回车,不区分大小写。) ExitVa或QuitVa 强制退出本软件系统 ExitVa3或QuitVa3 正常退出本软件系统 ShutdownMyComputer 关机(慎用) RebootMyComputer 重启(慎用) LogoffMyComputer 注销(慎用) ShutdownAbort 放弃关机 ShowCyndi 显示美女,学习累了可以看看啊,呵呵
根据引用\[1\]中提到的C++软件开发和维护过程中使用的工具,以下是一些常用的C++开发工具: 1. SPY++: 用于窗口查看和消息分析的工具。 2. Dependency Walker: 用于分析和查找动态链接库(DLL)依赖关系的工具。 3. Clipbrd: 用于查看剪贴板内容的工具。 4. GDIView: 用于查看GDI对象的工具。 5. Process Explorer: 用于查看和管理系统进程的工具。 6. Process Monitor: 用于监视和记录系统进程活动的工具。 7. API Monitor: 用于监视和分析应用程序与操作系统之间的API调用的工具。 8. Windbg: 用于调试和分析应用程序的工具。 9. IDA: 用于交互式反汇编的工具。 10. Wireshark: 用于网络抓包和分析的工具。 这些工具可以帮助开发人员快速分析和解决开发调试过程中遇到的各种问题,提高开发效率。\[1\] 请注意,这些工具的使用需要一定的学习和实践,可以通过引用\[2\]和\[3\]中提供的链接进一步了解这些工具的详细介绍和使用方法。 #### 引用[.reference_title] - *1* *2* *3* [C++软件开发值得推荐的十大高效软件分析工具](https://blog.csdn.net/chenlycly/article/details/127608247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值