首页 > 编程知识 正文

gdb多进程调试,gdb远程调试

时间:2023-05-05 19:50:20 阅读:46608 作者:794

gdb常用指令:start开始调试,在第1行代码中停止,(gdb ) start

info br表示当前存在断点

clear clear 750会删除750行中的所有断点

查看l list的缩写源代码,(gdb ) l [number/function]

b用b b: Breakpoint的简写设置断点。 (gdb ) b 10

b用b b: Breakpoint的简写设置断点。 (gdb ) b main

在bfilename : [ line/function ] b :文件filename行或函数中设置断点

x/10i $pc

i breakpoints i:info的缩写。 (gdb ) i breakpoints

d [ bpno ]删除d : delete breakpoint的缩写、指定编号的断点之一或删除所有断点。 断点号从1开始递增。 (gdb ) d 1

s s: step执行一行源代码,该行代码中如果有函数调用,则进入该函数; (gdb ) s

n n: next执行源代码行,同时执行此行中的函数调用。 (gdb ) n

r运行run的缩写、调试的程序。 如果到目前为止没有断点,请运行完整的程序。 如果存在断点,程序将在第一个可用断点处暂停。 (gdb ) r

c Continue的缩写。 继续运行调试对象程序,直到下一个断点或程序结束。 (gdb ) c

退出finish函数

p [var] Print缩写显示指定变量(全局变量,如临时变量或int a )的值。 (gdb ) p a

display [var] display,设定想要跟踪的变量。 例如,int a )。 (gdb )显示a

undisplay [varnum] undisplay取消对变量的跟踪,跟踪的变量由整数标识。 (gdb ) undisplay 1

set args可以指定运行时参数。 (gdb ) set args 10 20

show args显示运行时参数。

help [cmd] GDB帮助命令提供了GDB中有名命令的说明。 (gdb )帮助

换行前的命令,重复(gdb )换行

例如,谷歌使用gdb调试的方法

首先编译可调试的二进制文件,然后在编译过程中添加-gcflags '-N -l '参数。 范例

CGO _ enabled=0GOOS=linuxgobuild-mod=vendor-a-ldflags‘- ext ldflags‘- static’- GC flags‘- n-l’./cmd

然后,用gdb调试生成的二进制文件

gdb /root/go/swagger

进入gdb后,如果需要添加参数才能运行二进制文件,则必须先运行set args参数名称,例如

setargsgenerateserver---template-dir=/tmp/harbor/tools/swagger/templates---exclude-main---- adddd

b shared.go:750

然后,运行run并开始运行程序

where

readelf-a显示test suite|$ tee elf.txt二进制文件的内容,并将其保存到elf.txt文件中

info threads显示当前可调试的所有线程,每个线程都有分配给GDB的ID,供以后处理线程时使用。 前面有*的是当前正在调试的线程。

thread ID将当前正在调试的线程切换为具有指定ID的线程。

break thread _ test.c :123 threadall在所有线程的相应行中设置断点

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。