Lingze's blog Lingze's blog
timeline
about
friends
categories
tags

lingze

bin不是垃圾桶的意思!
timeline
about
friends
categories
tags
  • tools
lingze
2021-02-21
目录

gdb

# gdb使用

# 单步执行

当只有汇编时, n和ni表示单步步过, s和si表示单步步入 ,

当存在源码时, n和s表示源码内, ni和si表示汇编层面,

# 设置命令行参数

set args ...,

set args -V -f ./traces/amptjp-bal.rep # 设置命令行参数
1

# 设置宏

然后使用gdb设置宏pr=x/20xg, 提高调试幸福感(雾

define pr
eval "x/20xg $arg0"
end
1
2
3

# 自动载入

  • 主要使用gdb, 可以写gdb指令在一个文件,然后每次source进来, 当然也可以在当前目录写.gdbinit, 会每次自动source, 其中设置断点, 设置参数都可以了,
# ~/.gdbinit
set auto-load safe-path / # 取消安全路径,于是可以自动加载当前目录.gdbinit

# malloclab/.gdbinit
set args -V -f ./traces/amptjp-bal.rep # 设置命令行参数
#b mm.c:314
#b * mm_init
#b * mm_malloc
#b * mm_realloc
b * mm_free
#b * place
#b * coalesced
#b * extend_heap  # 断点, 
start # 自动开始运行, 注释以后自己手动start一下也可,
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 调用c语言函数

直接使用call可以调用c语言的函数,

# 任意地址写入修改

调试中修改地址, 可以使用set进行修改, 也可以借助调用c函数的特点,调用libc内的函数进行修改,

基本使用sscanf和write以及本身的set都可以达到比较不错的体验

#gdb
上次更新: 6/24/2025, 5:07:55 AM
Theme by Vdoing | Copyright © 2019-2025 lingze | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式