首页 > 编程知识 正文

linux代码调试,gdb使用教程

时间:2023-05-04 16:05:45 阅读:169719 作者:4538

33558 www.Sina.com % 2f % 20 objdump % E5 % 91 % BD % E4 % bb % a4 % b8 % bb % E8 % a6 % 81 % E6 % 98 % af % E7 % 94 % 25 % BD 33555 % 20-help usage : % 20 objdump % 20 option % 28s % 29 % 20 file % 28s % 29 % 20 display % 20 information % 20 from % 20 objdump % 20 3360 % 20-a % 2c % 20 % 2f % E6 % 98 % be7 % a4 % ba % E6 % a1 % a3 % E6 % 20 % B1 % bb % E4 % BC % bcls % 20-l % E5 % B0 bb % B6 % E7 % 9a % E6 % 95 % B4 % BD % 93 % E5 % a4 % B4 % e9 % 83 % A8 % 25 % 20 % ba % E7 % 89 % B9 % E5 % ae9 % E6 % 96 % 96 % % 93 % E5 % 92 % 25 cglibc % E7 % 89 % 88 % E6 % 9c % ef % BC % 25 % 20b6% E5 % 90 % E4 % b8 % aa section % E7 % 9a % 84 % E5 % 4 % a7 % E5 % B0 % 8f % E7 % ad % 89 % 20-x % 2c % 20 % 20 % ef % E6 % 20 % ef % BC % 8c % E5 % AE % 9e6% b5 % 8b % E5 % 9f % E5 % 9f E5 % B0 % 86 % E4 % BD % 8e7% ba % a7 % E7 % AC % a6 % E5 % 20 a5 % E7 % 9c % 8b % E7 % 9a % 84 % E6 % 96 % B9 % E5 % BC % 8f 80 % E6 % A0 % B7 % 20-d % 2c % 20 % 2f % 2f % E4 % bb %8eobjfile % E4 % 208 c % 87 % E4 % bb % a4 % E6 % 9c % ba % E5 % 99 tion.% 20-s % 2c % 20 % 2f % E5 % 8f % 8d % E6 % B1 % 87 % E7 % BC % 96 % E4 % BC % 2080 % E6 % 9c % 89 section % E7 % 9a % a7 % a3 % E6 % 9e4% BF % 9d % E5 % ad % E5 % A8 % E6 % 96 % 87 % E4 % bb % E4 % 20f % ad % E8 % A8 % E7 % 9a % 84 % E8 % af % f % 95 % E4 % BF % a1 % E6 % 81 % af % E3 % 80 % 82 % E6 % 9c % 89 % E4 % ba % 25 % 20af % E6 % 8c % 81 % 20-e % 2c % 20 % 20 % 20 7 % b8 % b8 % b5 % BC % E5 % ae9 % E7 % A8 % B4 % E6 % A0 % BC % E5 % BC % E5 % E7 % E7 % A8 % A8 % 84 % E6 % A0 % BC % E5 % BC % E5 % E5 % E5 % E5 % E5 % E5 % BC % E5 % E5 % BC aa % 20e7% AC % a6 % E5 % 8f % B7 % E8 % a1 % A8 % 20-t % 2c % 20 % 2f % E6 % 98 % be7 % a4 % ba % E5 %8A8 % E6 % 80 % 25 % 20 % 25 % 20-j % 2c % 20 % 2f % 2f % E4 % bb % 85 % E4 % bb % 85 % E6 % 98 % be7 % a4 % ba % E6 % 8c % 87 % E5 % ae5 %9a5 % 25 % 25 % 20 8f % 8d % E6 % B1 % E7 % BC % 96 % E5 % 87 % ba % E6 % a5 % E7 % 84 % E6 % 8c % 87 % E4 % bb % a4 % E3 % 80 % 80 % 25 % 206 % 2c % 20 % 2f % E7 % 94 % A8 % E6 % 96 % E4 % bb % E5 % 90d % E5 % 92 % 8c % E8 % a1 % 87c % E5 % 8f % B7 % 25 % 20a0% 81 % 20 % 82 % E6 % 95 % B0 % E5 % 8f % af % e9 % 89 % E5 % AE % 9a % E6 % 98 % be7 % a4 % ba % E7 % 9a % 25 % 20e5% 9d % 80 % ef % be % 80 % ba

692:8b 55 fc mov -0x4(%rbp),%edx695:01 d0 add %edx,%eax/home/yu.tian/studyCode/add.cpp:7}697:5d pop %rbp698:c3 retq Disassembly of section .fini:000000000000069c <_fini>:_fini():69c:48 83 ec 08 sub $0x8,%rsp6a0:48 83 c4 08 add $0x8,%rsp6a4:c3 retq

即可获得指定函数的汇编代码

第二种方式为进入GDB使用disassemble命令反汇编,(disassemble/m可同时显示源码) [root@VM_0_4_centos studyCode]# gdb libadd.so GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-115.el7Copyright (C) 2013 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>...Reading symbols from /home/yu.tian/studyCode/libadd.so...done.(gdb) disas/m addDump of assembler code for function add(int, int):4{0x0000000000000685 <+0>:push %rbp0x0000000000000686 <+1>:mov %rsp,%rbp0x0000000000000689 <+4>:mov %edi,-0x4(%rbp)0x000000000000068c <+7>:mov %esi,-0x8(%rbp)5 // usleep(1);6 return a+b;0x000000000000068f <+10>:mov -0x8(%rbp),%eax0x0000000000000692 <+13>:mov -0x4(%rbp),%edx0x0000000000000695 <+16>:add %edx,%eax7}0x0000000000000697 <+18>:pop %rbp0x0000000000000698 <+19>:retq End of assembler dump.

查看指定段信息

例如我们想要查看一个动态库的代码段,可如下操作

[root@VM_0_4_centos studyCode]# objdump libadd.so -s -j .textlibadd.so: file format elf64-x86-64Contents of section .text: 05a0 488d0588 0a200048 8d3d7a0a 20005548 H.... .H.=z. .UH 05b0 29f84889 e54883f8 0e77025d c3488b05 ).H..H...w.].H.. 05c0 240a2000 4885c074 f25dffe0 0f1f4000 $. .H..t.]....@. 05d0 488d0551 0a200048 8d3d4a0a 20005548 H..Q. .H.=J. .UH 05e0 29f84889 e548c1f8 034889c2 48c1ea3f ).H..H...H..H..? 05f0 4801d048 d1f87502 5dc3488b 15ef0920 H..H..u.].H.... 0600 004885d2 74f25d48 89c6ffe2 0f1f4000 .H..t.]H......@. 0610 803d110a 20000075 2748833d d7092000 .=.. ..u'H.=.. . 0620 00554889 e5740c48 8d3db207 2000e85d .UH..t.H.=.. ..] 0630 ffffffe8 68ffffff 5dc605e8 09200001 ....h...].... .. 0640 f3c30f1f 4000662e 0f1f8400 00000000 ....@.f......... 0650 48833d80 07200000 7426488b 057f0920 H.=.. ..t&H.... 0660 004885c0 741a5548 8d3d6a07 20004889 .H..t.UH.=j. .H. 0670 e5ffd05d e957ffff ff0f1f80 00000000 ...].W.......... 0680 e94bffff ff554889 e5897dfc 8975f88b .K...UH...}..u.. 0690 45f88b55 fc01d05d c3 E..U...].

当然也可以搭配start/stop address来显示指定地址的信息,效果如下

[root@VM_0_4_centos studyCode]# objdump libadd.so -s -j .text --start-address=0x600 --stop-address=0x670libadd.so: file format elf64-x86-64Contents of section .text: 0600 004885d2 74f25d48 89c6ffe2 0f1f4000 .H..t.]H......@. 0610 803d110a 20000075 2748833d d7092000 .=.. ..u'H.=.. . 0620 00554889 e5740c48 8d3db207 2000e85d .UH..t.H.=.. ..] 0630 ffffffe8 68ffffff 5dc605e8 09200001 ....h...].... .. 0640 f3c30f1f 4000662e 0f1f8400 00000000 ....@.f......... 0650 48833d80 07200000 7426488b 057f0920 H.=.. ..t&H.... 0660 004885c0 741a5548 8d3d6a07 20004889 .H..t.UH.=j. .H.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。