设置断点(可以直接指定函数名,或者文件加行数, 例如: b test_function, b demo.cpp:16)
info breakpoints
显示断点信息
delete
d
删除断点
print
p
打印表达式的值
run
r
启动程序
until
u
执行到指定行
info
i
显示信息, 例如查看断点信息: info breakpoints
ignore 1 5
忽略1号断点5次, 断点编号,可以通过info breakpoints
help
h
帮助信息
调试
$ ps -ef |grep .*gauss.*
xxx 2983662555371 02:18 pts/1 00:00:25 gaussdb -D /home/xxx/db --single_node -p 28922
// 通过进程名查看需要跟踪的进程ID$ gdb attach 298366(gdb) b hnswinsert_internal
Function "hnswinsert_internal" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1(hnswinsert_internal) pending.
// 利用函数名建立断点,如果函数名在共享库中,不能被加载到,可以选择pending(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y <PENDING> hnswinsert_internal
// 查看断点信息(gdb) c
Continuing.
Program received signal SIGUSR2, User defined signal 2.
[Switching to Thread 0x7f4517bfb700 (LWP 298386)]
0x00007f4612514ddd in poll () from /usr/lib64/libc.so.6
// 可以发现,执行c(continue)之后并没有停止在断点,这是因为被其它信号中断了,例如上面的信号`SIGUSR2`
// 可以执行下面的命令来忽视这些特定的信号,例如忽视`SIGUSR2`(gdb) handle SIGUSR2 nostop noprint pass
Signal Stop Print Pass to program Description
SIGUSR2 No No Yes User defined signal 2(gdb) c
Continuing.
[New Thread 0x7fd2425ef700 (LWP 303881)][Thread 0x7fd2425ef700 (LWP 303881) exited][New Thread 0x7fd2425ef700 (LWP 303882)][Thread 0x7fd2425ef700 (LWP 303882) exited][New Thread 0x7fd2425ef700 (LWP 303893)][Switching to Thread 0x7fd2425ef700 (LWP 303893)]Breakpoint 1, hnswinsert_internal (index=0x7fd23f1aa2b0, values=0x7fd2425bae20, isnull=0x7fd2425bad90, heap_tid=0x7fd23fdc8068, heap=0x7fd23f1acee8, checkUnique=UNIQUE_CHECK_NO) at src/hnswinsert.cpp:815
815{
// 可以发现,忽视其它中断信号后,执行`c`可以直接到达预设的断点处(gdb) c
Continuing.
[New Thread 0x7fd23e993700 (LWP 304442)]Breakpoint 1, hnswinsert_internal (index=0x7fd23f1aa2b0, values=0x7fd2425bae20, isnull=0x7fd2425bad90, heap_tid=0x7fd23fdc8068, heap=0x7fd23f1acee8, checkUnique=UNIQUE_CHECK_NO) at src/hnswinsert.cpp:815
815{(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00007fd23e9b8cff in hnswinsert_internal(RelationData*, unsigned long*, bool*, ItemPointerData*, RelationData*, IndexUniqueCheck) at src/hnswinsert.cpp:815breakpoint already hit 2times
// 查看断点信息,并可以看到断点已经命中的次数(gdb) ignore 11830
Will ignore next 1830 crossings of breakpoint 1.
// 如果断点在循环中, 需要被大量重复执行, 如果我们只需要查看其中某一次,例如1831次的情况,可以利用`ignore`来忽视前面`1380`次
// 的断点(gdb) c
如果你在使用Windows系统时遇到“msvcp140.dll丢失”的错误提示,通常是因为你的计算机上缺少或损坏了msvcp140.dll文件。msvcp140.dll是Microsoft Visual C Redistributable包的一部分,许多应用程序和游戏需要它来正常运行。以下是几种解决msvcp140.dll丢…