当前位置: 首页 > news >正文

linux自用小手册

一、GDB常用命令

        想用gdb调试C或C++程序,编译时需要加-g选项,编译出的文件为debug状态(如果不加则是release状态),且不可以加-O选项进行优化。

命令简写解释
set args

设置程序传递的参数

例:./demo -v value -o a.out 传递了四个参数

breakb

设置断点

例:b 20  在20行打断点

runr开始运行程序(遇到断点停止)
nextn执行当前行语句(如果当前为函数调用,则不会进入函数内部)
 steps

进入函数内部执行一行语句

(如果为第三方库,进不去

printp

打印某个变量的值

例:p i    打印当前变量i的值

continuec

继续执行到下一个断点

set var

设置变量的值(针对已有变量)

假设程序中存在变量i

set var i=100   将变量i设置为100,然后继续调试

quitq退出gdb
backtracebt

查看函数调用栈

二、GDB调试core文件

        当执行一个程序时,可能会因为内存越界而崩溃。但此时没有错误信息,我们无法调试。通过生成的core文件,可以看到导致崩溃的具体代码。

        默认系统是不生成core文件的,可以通过以下命令打开

ulimit -c unlimited

        再运行后,即使崩溃,也会在当前目录生成core.XXX的文件。调试方式如下:

gdb core.XXX ./demo

        此时在gdb中会显示崩溃行的具体代码。

三、GDB调试正在运行的程序

四、静态库与动态库

        (注意:[ ]表示可选项,{ }表示必选项)

目的选项命令
链接.h文件-Ig++ main.cpp [ -I .h所在目录 ]
编译静态-c

g++ -c myKu.cpp -o libmyKu.a

(注意:动态库一般以.a作为尾缀,lib作为前缀)

编译动态-fPIC -shared

g++ -fPIC -shared myDKu.cpp -o libmyDKu.so

(注意:动态库一般以.so作为尾缀,lib作为前缀)

链接静态

-L

-l

g++ main.cpp [ -L 库所在路径 -l 库名称 ]

(注意:不是完整的库名,而是去掉前缀lib和尾缀.so或.a的库名)

链接动态

-L

-l

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库所在目录

(注意:以上语句是将动态库所在目录包含到库路径中)

g++ main.cpp [ -L 库所在路径 -l 库名称 ]

(注意:不是完整的库名,而是去掉前缀lib和尾缀.so或.a的库名)

 五、tmux开启多个窗口

首先使用tmux命令打开多行窗口,然后在以下选项中选择:

        1.按住Ctrl+B,再按 " 表示垂直开启另一个窗口

        2.按住Ctrl+B,再按 " 表示垂直开启另一个窗口

(切换窗口Ctrl+B,再按方向键)(退出则输入exit)


http://www.mrgr.cn/news/41601.html

相关文章:

  • stack、heap、.bss、.data、.text
  • Pikachu-csrf-CSRF(POST)
  • Pikachu-xss防范措施 - href输出 js输出
  • C++ 矩阵拼接相关问题记录
  • 酒店构建数字化业产业—未来之窗行业应用跨平台架构
  • 草莓及叶片病害检测数据集 4300张 草莓病害 voc yol 7类。
  • 每日一题:二分查找
  • python引用计数
  • Windows+VSCode运行C/C++时生成的*.exe问题
  • 46. 全排列
  • 边缘自适应粒子滤波(Edge-Adaptive Particle Filter)的MATLAB函数示例,以及相应的讲解
  • C语言 | Leetcode C语言题解之第453题最小操作次数使数组元素相等
  • BBED标记坏块以及修复坏块
  • RabbitMQ 优点和缺点
  • netty之Netty与SpringBoot整合
  • PCL 点云直通滤波
  • Python | Leetcode Python题解之第452题用最少数量的箭引爆气球
  • 【理论科学与实践技术】数学与经济管理中的学科与实用算法
  • 谷歌最新发布:185个AI应用案例深度解析
  • Qt 概述