关于gdb

作者: PatronumMe | 来源:发表于2020-12-13 15:47 被阅读0次

gdb是一个在Linux系统上非常实用的调试工具,虽然没有像Visual Studio一样的UI,但是功能并不缺失,甚至更加强大。如果熟悉了gdb的操作,在Linux下编程、调试可以事半功倍。
以下是我在开发过程中常用到的一些gdb命令,简单做了一下整理放在这,以后有遇到更多的再加,但是不会像gdb文档一样把所有可能用法全部列上来。

预备知识:

gdb会启动一个命令行进程,在命令行里输入命令并等待返回结果。它必须要attach到一个调试目标进程才能正常工作,如果还没有启动进程或者进程已经结束,则大部分命令都会无效。
如果被调试的程序还未启动,仅指定了可执行文件的路径,可以使用start命令启动,启动后自动断在main函数的第一行代码位置。如果是针对一个已经运行的进程,使用attach命令指定pid,目标进程会在当前位置停下来,执行到哪算哪,此时可以使用c命令让进程继续执行。

arguments

gdb attach <pid>
gdb --args ./bubble -dispno 2 -> execute command/arguments

stop/breakpoints

b <file>:<line> -> set breakpoint
b *<addr> -> set breakpoint at address
watch expr -> data breakpoint(writing)
rwatch expr -> data breakpoint(reading)
awatch expr -> data breakpoint(writing + reading)
<Ctrl> + C -> debug break now
catch syscall <type> -> break when syscall invoked, type: clone / stat
cond <number> <expr> -> set conditional breakpoint
cond <number> -> cancel condition
delete <number> -> delete breakpoint
disable <number> -> disable breakpoint
enable <number> -> enable breakpoint

debug/steps

next -> step over
step -> step into
finish -> step out
p <expression> -> watch variable
ptype <expression> -> watch value type
p/x <expression> -> watch in hex
x <addr> -> view memory

frames/threads

thread 2 -> switch to thread 2
bt -> back trace
f <number> -> set stack frame
thread apply all bt -> back trace of all threads

view asm

layout next -> next layout
layout prev -> previous layout
layout asm -> view assembly
<Ctrl> + X, A -> quit layout

show info

info breakpoints -> list all breakpoints
info threads
info sharedlibrary -> show libraries
info handle -> show signal handles information
info registers

set global info

set env DISPLAY ":0" -> environment
set solib-search-path /home/ -> set local symbol dir
set follow-fork-mode child -> track child
set backtrace past-main on -> set to show backtrace out of main function

start/finish commands

attach <pid>
file <file>
start
si -> terminate process
c -> continue
signal SIGTRAP -> continue with signal
handle SIGTRAP nostop -> do not stop at SIGTRAP
q -> quit

相关文章

  • linux gdb详解

    一.GDB命令详解 在linux程序调成中gdb是最常用的工具。 关于gdb的说明可以在linux下直接 man ...

  • 关于gdb

    gdb是一个在Linux系统上非常实用的调试工具,虽然没有像Visual Studio一样的UI,但是功能并不缺失...

  • iOS 安全配置

    一、关于GDB挂起问题 1.首先什么是GDB,GDB就是调试工具,在iOS中 xcode中的断点查看就是调试工具中...

  • gdb调试

    gdb安装 安装gdb 在钥匙管理器中新建证书 配置gdb证书 添加gdb初始化文件 .gdbinit gdb 命...

  • Debugging with GDB

    Debugging with GDB GDB@wiki(GNU Debugger)GDB is a portabl...

  • GDB 配置

    摘要:调试器 GDB 的配置 GDB 配置 使用 GDB 扩展来配置 GDB 事实上我还是觉得原生的 GDB 就...

  • 2. gdb的使用

    参考链接1. GDB调试2. gdb调试方法3. gdb调试示例 1. 说说 gdb gdb 是一款 UNIX 系...

  • GDB调试记录

    gdb attach 15343 # 调试某个进程 GNU gdb (GDB) 7.12Copyrigh...

  • GDB学习笔记(2)

    这部分是关于GDB变量设置和程序崩溃处理。 gdb有方便变量,可以用来跟踪一些指针变量,或控制调试过程,但是感觉实...

  • gdb 调试

    gdb-入门 100-gdb-tips

网友评论

      本文标题:关于gdb

      本文链接:https://www.haomeiwen.com/subject/itqpgktx.html