public:it:gdb

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
public:it:gdb [2021/12/07 09:03] oakfirepublic:it:gdb [2024/04/23 15:29] (当前版本) – [GDB] oakfire
行 3: 行 3:
   * GDB 支持的语言:Ada、 Assembly、 C、 [[.:cplusplus|C++]]、 D、 Fortran、 [[.:go|Go]]、 Objective-C、 OpenCL、 Modula-2、 Pascal、[[.:rust|Rust]]。   * GDB 支持的语言:Ada、 Assembly、 C、 [[.:cplusplus|C++]]、 D、 Fortran、 [[.:go|Go]]、 Objective-C、 OpenCL、 Modula-2、 Pascal、[[.:rust|Rust]]。
   * [[https://sourceware.org/gdb/current/onlinedocs/gdb/|Online docs]]   * [[https://sourceware.org/gdb/current/onlinedocs/gdb/|Online docs]]
 +  * [[https://evilpan.com/2020/09/13/gdb-tips/|GDB的那些奇淫技巧]] -- 超级棒,涉及子进程调试、多线程调试,以及一大堆指令表
 +  * [[https://github.com/hellogcc/100-gdb-tips/blob/master/src/index.md|GDB调试的一百个小技巧]]
 +===== 远程调试 =====
 +  * [[https://davis.lbl.gov/Manuals/GDB/gdb_17.html|gdbserver]]
 +===== Tips =====
 +  * 获取指令帮助可随时运行 help,   比如 ''help run''
 +  * 需要有调试符号,gcc 或 g++ 编译时带 ''-g'' 参数
 +  * 可用 ''file <your-file>'' 来查看是否带了调试符号
 +  * gdb 里使用''info sharedlibrary''命令查看库符号加载
 +  * 调试coredump 文件: ''gdb appname core-name''
 +  * 调试进程: ''gdb appname 1234'', 1234 为进程id
 +  * 带参数:
 +    * ''gdb --args app arg1 arg2'' 
 +    * 或者 gdb 启动后''set args arg1 arg2'' 
 +    * 或 run 时携带参数:''run arg1 arg2''
 +    * 查看参数 ''show args''
 +  * 查看所有断点''info breakpoints''
 +    * 删除对应序号断点:''delete 1''
 +  * 如果进入某个函数直接崩溃报错, bt栈只显示到该函数地址,很大可能是改函数内栈溢出(一般是8M),查看变量或数组是否过大。
 +  * 崩溃时,查看变量:
 +    * ''bt'' 显示栈信息
 +    * ''frame 0'' 进入最顶部栈
 +    * ''info local'' 打印所有局部变量
 +    * ''p <name>'' 打印某个变量,可打印全局变量
 +
 +===== 常用指令 =====
 +
 +<WRAP tablewidth 90% center>
 +^ 指令 ^ 简写 ^ 说明 ^
 +|help | h |查看帮助文档 |
 +|run | r |执行程序 |
 +|break | b | 打断点 | 
 +|info break |info b|查看断点 |
 +|step | s |步进、进入内部 |
 +|next | n |执行下一行 |
 +|bt | bt |查看栈调用信息 | 
 +|print | p |查看变量等 |
 +|list | l |查看当前代码 |
 +|info source | |查看当前源码文件 |
 +|info sources | |查看源码文件 |
 +|continue | c |继续执行 |
 +|where |  |当前执行到哪 |
 +|quit | q |退出gdb |
 +</WRAP>
  • public/it/gdb.1638839005.txt.gz
  • 最后更改: 2021/12/07 09:03
  • oakfire