GDB用法学习笔记
基本用法:gdb是一个调试器,用于调试程序。通过以下命令启动gdb:
gdb <可执行文件>
普通用法:gdb提供了一系列常用的调试命令,如设置断点、单步执行等。例如,设置断点并运行程序:
break <行号>
run
高级用户:高级用户可以使用gdb的更多功能,如条件断点、查看内存等。例如,设置条件断点:
break <函数名> if <条件>
隐藏用法:gdb还提供了一些不太常见但功能强大的调试技巧。例如,打印堆栈回溯信息:
bt
不常用用法:gdb还具有一些较少使用的功能,如动态修改变量值、执行外部命令等。例如,动态修改变量的值:
set var <变量名> = <新值>

基本用法:启动GDB调试器并附加到正在运行的进程 普通用法:设置断点、单步执行、打印变量的值 高级用户:使用调试器脚本、动态调试、内存分析 隐藏用法:调试共享库、远程调试 不常用用法:调试嵌入式系统、反汇编、操作内核空间
举例:
基本用法:
gdb ./my_program
普通用法:
break main
(设置断点)、step
(单步执行)、print variable
(打印变量的值)高级用户:编写GDB脚本来自动化调试过程、使用GDB的反汇编功能分析代码、使用GDB的内存分析功能检测内存错误
隐藏用法:调试一个正在运行的程序而不需要源代码、通过GDB服务器进行远程调试
不常用用法:调试嵌入式系统中的裸机程序、使用GDB的反汇编功能来分析程序的汇编指令、调试内核模块的代码

基本用法: 运行gdb并加载可执行文件 普通用法: 设置断点、单步调试、查看变量值 高级用户: 自定义命令、脚本化调试任务 隐藏用法: 修改程序状态、内存操作、反汇编 不常用用法: 追踪系统调用、远程调试、硬件调试
举例:
基本用法:
gdb ./my_program
普通用法:
break main
(设置在main函数处断点)高级用户:
define mycommand
(定义一个名为mycommand的自定义命令)隐藏用法:
set $eax = 10
(修改寄存器eax的值为10)不常用用法:
catch syscall open
(追踪程序中的open系统调用)

基本用法: gdb的基本用法是调试程序,可以使用以下命令:
gdb <可执行文件>
:启动gdb并加载可执行文件进行调试。
普通用法: gdb的普通用法包括设置断点、执行程序、查看变量值等操作,例如:
break <行号>
:在指定行号设置断点。run
:运行程序。print <变量名>
:打印变量的值。
高级用户: gdb的高级用法适用于需要深入调试的情况,例如:
backtrace
:打印函数调用栈。watch <表达式>
:设置监视点,当表达式的值发生变化时暂停程序执行。
隐藏用法: gdb的隐藏用法通常是一些高级调试技巧,例如:
set logging file <文件名>
:将gdb的输出记录到指定文件。record
:以记录模式运行程序,可以回放程序执行过程。
不常用用法: gdb的不常用用法包括一些特殊的调试功能,例如:
disassemble
:反汇编当前函数。set pagination off
:关闭分页功能,显示长输出结果。
请注意,上述命令仅为示例,实际使用时可能需要根据具体情况进行调整和组合。建议参考gdb的文档或使用gdb --help
命令获取更详细的信息。

基本用法:gdb是一个调试器,用于调试和分析程序。简单的基本用法包括启动程序、设置断点、运行程序、查看变量值等。
普通用法:gdb的普通用法包括使用命令行参数、查看堆栈信息、单步执行程序、打印变量值等。
高级用户:高级用户可以利用gdb进行更深入的调试和分析。例如,使用调试宏、动态追踪函数调用、捕获异常信息等。
隐藏用法:gdb还提供了一些隐藏的功能,可以进一步优化调试体验。例如,使用条件断点、设置观察点、记录程序执行历史等。
不常用用法:gdb还有一些不太常用但功能强大的特性。例如,远程调试、编写Python扩展脚本、自定义命令等。

基本用法:gdb是一个调试器,用于调试程序。常用的基本命令包括:
run
:运行程序。break
:设置断点。next
:执行下一行代码。print
:打印变量的值。step
:进入函数内部。
普通用法:gdb提供了一些进阶命令,用于更详细的调试。
backtrace
:打印函数调用堆栈。watch
:监视变量的值变化。finish
:执行当前函数直到返回。info breakpoints
:显示所有断点的信息。display
:在每次停止时打印变量的值。
高级用户:gdb还提供了一些高级功能,用于更复杂的调试场景。
set variable
:设置变量的值。reverse-continue
:在逆向调试中继续执行。record
:记录程序执行过程以便后续回放。catch
:捕获特定的异常。attach
:附加到正在运行的进程进行调试。
隐藏用法:gdb有一些不太为人所知的隐藏功能,如:
tui enable
:启用文本用户界面。maintenance
:进行维护操作,如符号表的管理。define
:定义自定义命令。set logging
:将调试会话记录到文件中。set disassembly-flavor
:设置反汇编格式。
不常用用法:这些命令在实际调试中使用频率较低。
x
:查看内存中的数据。advance
:在循环中向前执行多次。rbreak
:根据正则表达式设置临时断点。signal
:控制程序的信号处理行为。set remote
:用于远程调试。
基本用法:调试程序,设置断点,查看变量值。 普通用法:跟踪程序执行,查看函数调用栈,修改变量值。 高级用户:使用观察点,条件断点,反汇编调试,内存调试。 隐藏用法:使用Python扩展调试,多线程调试,远程调试。 不常用用法:硬件调试,嵌入式调试,处理器特定调试功能。

基本用法:启动GDB调试器。 普通用法:设置断点、运行程序、查看变量值。 高级用户:自定义命令、使用GDB脚本。 隐藏用法:调试远程程序、反汇编、查看内存。 不常用用法:调试多线程程序、跟踪系统调用、动态加载符号表。
举例:
基本用法:
gdb ./my_program
普通用法:
break main
(设置在main
函数处的断点)、run
(运行程序)高级用户:
define mycommand
(自定义命令)或source my_script.gdb
(使用GDB脚本)隐藏用法:
target remote 192.168.0.1:1234
(调试远程程序)、disassemble
(反汇编当前函数)、x/10x $esp
(查看栈上的内存内容)不常用用法:
thread apply all bt
(打印所有线程的堆栈信息)、catch syscall open
(跟踪系统调用open的调用情况)、sharedlibrary libexample.so
(动态加载符号表中的libexample.so库)


基本用法:在终端中输入"gdb <可执行文件名>"来启动GDB调试器。
普通用法:使用"break"设置断点、"run"运行程序、"next"单步执行、"print"打印变量值。
高级用户:使用"watch"设置观察点、"step"进入函数、"finish"执行完当前函数、"backtrace"查看调用堆栈。
隐藏用法:使用"set follow-fork-mode"跟踪fork出的子进程、"set detach-on-fork"在fork时自动分离子进程。
不常用用法:使用"record"和"replay"记录和回放程序执行、"set pagination off"关闭分页、"set logging file"将输出保存到文件。