gdb 调试汇编

这篇具有很好参考价值的文章主要介绍了gdb 调试汇编。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

starti

从第一条指令开始执行并停止.

nexti

执行完当前指令; 当前指令可能是call一个函数, 但是仍然下一条指令才停止;

stepi

下一条指令, 如果跳转也跟着跳转;

查看寄存器值

info registers 查看通用寄存器
info registers {register_name ...}指定寄存器的值
info registers all所有寄存器, 不仅仅通用寄存器; 还有向量寄存器等;

修改寄存器

p $rip = val文章来源地址https://www.toymoban.com/news/detail-645756.html

查看汇编

disassemble $rip
disassemble main
# 推荐
x /1024ig $rip

案例

代码

int main() {
    int a = 0;
    a ++ ;
    return a;
}

编译

gcc test.cpp -o a.out

案例

ch@ch-ubuntu:~/ch/cppfile/test$ gdb ./a.out -q
Reading symbols from ./a.out...
(No debugging symbols found in ./a.out)
(gdb) starti
Starting program: /home/ch/ch/cppfile/test/a.out 

Program stopped.
0x00007ffff7fe4880 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) b main
Breakpoint 1 at 0x555555555131
(gdb) c
Continuing.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, 0x0000555555555131 in main ()
(gdb) disassemble $rip
Dump of assembler code for function main:
   0x0000555555555129 <+0>:	endbr64 
   0x000055555555512d <+4>:	push   %rbp
   0x000055555555512e <+5>:	mov    %rsp,%rbp
=> 0x0000555555555131 <+8>:	movl   $0x0,-0x4(%rbp)
   0x0000555555555138 <+15>:	addl   $0x1,-0x4(%rbp)
   0x000055555555513c <+19>:	mov    -0x4(%rbp),%eax
   0x000055555555513f <+22>:	pop    %rbp
   0x0000555555555140 <+23>:	ret    
End of assembler dump.
(gdb) nexti
0x0000555555555138 in main ()
(gdb) disassemble $rip
Dump of assembler code for function main:
   0x0000555555555129 <+0>:	endbr64 
   0x000055555555512d <+4>:	push   %rbp
   0x000055555555512e <+5>:	mov    %rsp,%rbp
   0x0000555555555131 <+8>:	movl   $0x0,-0x4(%rbp)
=> 0x0000555555555138 <+15>:	addl   $0x1,-0x4(%rbp)
   0x000055555555513c <+19>:	mov    -0x4(%rbp),%eax
   0x000055555555513f <+22>:	pop    %rbp
   0x0000555555555140 <+23>:	ret    
End of assembler dump.
(gdb) x /5ig $rip
=> 0x555555555138 <main+15>:	addl   $0x1,-0x4(%rbp)
   0x55555555513c <main+19>:	mov    -0x4(%rbp),%eax
   0x55555555513f <main+22>:	pop    %rbp
   0x555555555140 <main+23>:	ret    
   0x555555555141:	add    %al,(%rax)
(gdb) ni
0x000055555555513c in main ()
(gdb) ni
0x000055555555513f in main ()
(gdb) p $eax
$1 = 1
(gdb)

到了这里,关于gdb 调试汇编的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux - 还不懂 gdb 调试器?(调试软件)

    当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g++ 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。 在了解调试器之前,你应该对代码的发布版本做一些了解: 我们在 VS

    2024年02月07日
    浏览(52)
  • GDB调试

    1.1 调试前的准备 用gcc/g++编译源程序的时候,编译后的可执行文件不会包含源程序代码,如果您打算编译后的程序可以被调试,编译的时候要加 -g 的参数。 1.2 基本调试命令 2.1 什么是core文件? core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,用于对程序

    2024年02月13日
    浏览(33)
  • gdb调试、运行程序

    参考文章:一文教你快速上手GDB程序调试 - 知乎 (zhihu.com)

    2024年02月09日
    浏览(33)
  • cuda gdb调试

    如果cudaDeviceEnablePeerAccess函数不支持或不起作用,您仍然可以尝试其他方法来实现GPU之间的数据交换和通信。以下是一些替代方法: 通过主机内存进行数据传输: 如果GPU之间的数据交换不是非常频繁,您可以将数据从一个GPU复制到主机内存,然后再从主机内存复制到另一个

    2024年02月11日
    浏览(31)
  • GDB调试基础知识

    GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境, GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。 一般来说, GDB 主要帮助你完成下面四个方面的功能: 启动程序,可以按照自定义的要求随心所欲的运行程序。 可让被调试的程序在所指定的

    2024年02月16日
    浏览(38)
  • Linux: GDB 调试工具

      目录 概念: Linux 下 debug 和 release 的区别: GDB 的使用 :  激活和进入工作模式:  查看文件的内容: 运行调试的文件:  打断点:   查看断点: 删除断点: 禁用断点: ​编辑 重新打开断点:  逐过程 与 逐语句: 查看变量/监视功能:  常显示:  运行至下一个断点

    2024年02月19日
    浏览(38)
  • ARM Linux 系统稳定性分析入门及渐进 13 -- gdb 反汇编 disassemble 命令详细介绍及举例】

    请阅读 【ARM Linux 系统稳定性分析专栏导读】 在GNU调试器(GDB)中,有许多命令可以帮助我们调试应用程序。 gdb : 这是一个强大的Unix下的程序调试工具。以下是使用gdb的一个简单示例: 在这个例子中,我们启动了 gdb 并将我们的程序 test 作为参数传递。 可执行程序 test 是由

    2024年02月11日
    浏览(55)
  • C++(Qt)软件调试---gdb调试入门用法(12)

    更多精彩内容 👉个人内容分类汇总 👈 👉C++软件调试、异常定位 👈 👉GDB官方教程文档(英文) 👈 👉100个gdb小技巧 👈 1.1 什么是GDB GDB是GNU调试器的缩写,是一种用于调试程序的工具。 它可以帮助程序员在程序运行时检查程序的状态,查找程序中的错误和问题,并提供

    2024年02月12日
    浏览(38)
  • Linux调试器gdb

    本文已收录至《 Linux知识与编程 》专栏! 作者: ARMCSKGT 演示环境: CentOS 7     ​ 目录 前言 正文 下载gdb 生成可调式文件 进入gdb gdb常用指令 查看代码 l  运行程序 r  断点设置 b  显示信息 info  查看断点 info b  删除断点 d  禁用断点 disable breakpoints  启用断点 enable brea

    2024年02月14日
    浏览(52)
  • Linux--调试器:gdb

    gcc与g++默认动态链接形成的可执行程序(比如a.out)是 release 版本,不可调试!!! 如何搞成debug可调试版本? 查看可执行程序存储了哪些内存空间:   调试语法:

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包