
gdb
会写bug的程序猿
东南大学,六年开发经验,python,c,sql,shell
展开
-
gdb-其他
gdb还可以查看寄存器信息,能够进程反汇编代码调试,编译选项除了-g还有-g1、-g2(默认就是这个)、-g3等等。原创 2021-09-15 16:05:48 · 142 阅读 · 0 评论 -
gdb调试多进程socket服务端
gdb在默认设置下调试多进程程序时只会去调试主进程。gdb版本高于v7.0支持多进程的同时调试。只需要设置follow-fork-mode和detach-on-fork即可。Socket服务端调试过程:[root@localhost bin]# gdb socketserver GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7Copyright (C) 2013 Free Software Foundation,...原创 2021-09-15 16:04:34 · 523 阅读 · 1 评论 -
gdb定位死锁问题
本案例借着gdb调试死锁的问题,演示在多线程场景下如何使用gdb调试多线程死锁的调试过程:1.为了重现死锁现象,自己写了个死锁demo[root@localhost bin]# ./deadLock thread_routine_two:lock mutex twothread_routine_one:lock mutex onethread_routine_one:lock mutex twothread_routine_two:lock mutex one2....原创 2021-09-15 16:00:55 · 1452 阅读 · 0 评论 -
gdb调试core dump异常
gdb调试core文件 本案例主要介绍如何用gdb根据进程生成的core文件定位进程core dump的原因。1. 打开core文件生成开关 首先生成core需要调整服务器设置,输入ulimit -c如果结果为0表示没有打开。在/etc/profile中增加ulimit -S -c unlimited > /dev/null 2>&1,然后执行source /etc/profile,再次执行ulimit -c如果结果为unlimited,则表示设置成...原创 2021-09-15 15:57:04 · 755 阅读 · 0 评论 -
gdb教程-实战演练
注意:本内容主要用于常见的gdb命令的熟悉,gdb不是在所有的情况下都能打印出对应的代码,如果调试的服务器上没有源码的情况下只能打印出代码的行号,这个时候需要根据行号自行去跟源码做对照。源码流程调试:1. 进入调试[root@localhost testgdb]# gdb bin/basicFunctionGNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7Copyright (C) 2013 Free Sof...原创 2021-09-15 15:47:19 · 266 阅读 · 0 评论 -
linux gdb调试命令详解
1. list 命令list命令可以所写为l,可以列出所调试程序的代码(前提是代码与可执行程序在同一服务器上),其居具体使用方法如下: list+lineNumber,打印指定行附近的代码。如list 45,gdb会将45行前后的代码打印在屏幕上。 直接输入list,gbd会将gdb当前所处的行以及后面的代码打印在屏幕上。 输入list -,gbd会将gdb当前所处的行前面的代码打印在屏幕上。 list+functionName,打印名称为functionName的函数的上下文的代码。2原创 2021-09-15 15:30:28 · 4672 阅读 · 0 评论 -
gdb简介
GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNⅨ下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能,若要调试程序,需要在编译时加上-g选项即可。gdb的主要功能如下:在程序中设置断点,Debug时遇到断点处暂停。 可以监视某个变量,并利用print函数将该变量的值打印出来。 程序可step-by-step执行。 运行时修改变量...原创 2021-09-15 15:07:14 · 914 阅读 · 0 评论