gdb

ubuntu开启core

  • 检查是否开启core
ulimit -c      //0表示没有开启
  • 开启core
sudo vi /etc/profile    //文件尾添加

# No core files by default 0, unlimited is oo
ulimit -S -c unlimited > /dev/null 2>&1

sudo source /etc/profile    //立即生效
  • 添加系统配置
sudo vi /etc/sysctl.conf    //添加系统配置

# open, add core.pid 
kernel.core_pattern = ./core_%t_%p_%e
kernel.core_uses_pid = 1

sudo sysctl -p /etc/sysctl.conf    //立即启用
  • 检查开启状态
ulimit -c
unlimited

cat /proc/sys/kernel/core_uses_pid 
1

生成一个可以被调试的程序

C/C++程序来说,在编译时加上-g参数,保留调试信息

  • Makefile
    直接在Flag中添加“-g”参数就可以

  • Cmake
    需要在CMakeLists.txt中添加以下两行
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb ")
SET(CMAKE_CXX_FLAGS_RELEASE "${ENV{CXXFLAGS} -O3 -Wall")

编译的时候,使用如下指令

cmake -DCMAKE_BUILD_TYPE=Debug/Release  path

也可以在CMakeLists.txt中,写死编译条件

#SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_BUILD_TYPE "Release")

查看程序是否可以被调试

  • readelf查看段信息
//如果有值,则可以debug
readelf -S 程序 | grep debug
  • 直接gdb 程序
//出现如下字段,表示不能debug
Reading symbols from xxx..(no debugging symbols found)...done

gdb带参数的程序

  • run 参数列表
gdb 程序
run 参数列表
  • set args 参数列表
gdb 程序
set args 参数列表
run

转载于:https://www.cnblogs.com/s3320/p/11445855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值