gcc

gcc -E 只预处理
gcc -S 生成汇编代码
gcc -c 生成可重定向目标文件 -Idir 大写的i,头文件目录
-include / -i 要include的头文件,例如gcc hello.c -i /path/hello.h
-L 搜索库路径
-llibrary 小写的L,库名 -g 编译时生成调试信息
-gstabs 此选项以stabs格式声称调试信息,但是不包括gdb调试信息
-gstabs+ 此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
-ggdb 此选项将尽可能的生成gdb的可以使用的调试信息.
-glevel 请求生成调试信息,同时用level指出需要多少信息,默认的level值是2 -static 禁止使用动态库
-shared 尽量使用动态库
-symbolic 建立共享目标文件的时候,把引用绑定到全局符号上(编译器不一定支持) -Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
-pedantic-errors 允许发出ANSI/ISO C标准所列出的错误
-werror 把所有警告转换为错误,以在警告发生时中止编译过程
-w 关闭所有警告,建议不要使用此项 -Dmacro 相当于C语言中的#define macro
-Dmacro=defn 相当于C语言中的#define macro=defn
-Umacro 相当于C语言中的#undef macro
-undef 取消对任何非标准宏的定义 -o 指定生成目标名称 -O0 -O1 -O2 -O3 编译优化,缺省值为1
-fpic 编译器就生成位置无关目标码.适用于共享库(shared library)
-fPIC 编译器就输出位置无关目标码.适用于动态连接(dynamic linking)

gdb

vim

知道创宇技能表推荐的一篇文章比较好,酷壳的简明 VIM 练级攻略

摘录一些比较常见的:

w: 到下一个单词的开头

e: 到下一个单词的结尾

% : 匹配括号移动,包括 (, {, [.

*和#:匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

fa :到下一个为a的字符处,你也可以fs到下一个为s的字符。

t, : 到逗号前的第一个字符。逗号可以变成其它字符。

3fa : 在当前行查找第三个出现的a。

pmap

  • 显示进程内存映射
# -x显示扩展信息,后接进程pid
# Address: 内存开始地址
# 显示信息:
Kbytes: 占用内存的字节数
RSS: 保留内存的字节数
Dirty: 脏页的字节数(包括共享和私有的)
Mode: 内存的权限:read、write、execute、shared、private
Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
Device: 设备名 (major:minor) pmap -x 12345

pstack

跟踪进程栈:pstack

strace

跟踪进程中系统调用:strace

eg:

strace -tt -T -f -ff -o file.out -p [PID]
-tt 在输出中的每一行前加上时间信息,微秒级
-T 显示每一调用所耗的时间
-o filename 将strace的输出写入文件filename
-p pid 跟踪指定的进程pid
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号

readelf

可以得到ELF文件各段内容,分析链接、符号表等需要用到

objdump

反汇编,需要理解汇编语言

ldd

程序依赖库查询

# ldd后接可执行文件
# 第一列为程序依赖什么库,第二列为系统提供的与程序需要的库所对应的库,第三列为库加载的开始地址
# 前两列可以判断系统提供的库和需要的库是否匹配,第三列可以知道当前库在进程地址空间中对应的开始位置 ldd a.out

Linux工具之开发调试命令的更多相关文章

  1. Linux c c++ 开发调试技巧

    看到一篇介绍 linux c/c++ 开发调试技巧的文章,感觉挺使用,哪来和大家分享. 通向 UNIX 天堂的 10 个阶梯Author: Arpan Sen, 高级技术人员, Systems Doc ...

  2. Linux下C++开发常用命令

    本页面记录本人在Linux下进行C++开发时使用的常用命令,注意这里不包括比如ls,mv等linux命令,这里会持续更新.首先假设你只有一个源程序文件,叫vec.cpp,编译后的可执行程序叫vec(本 ...

  3. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  4. Linux 常用命令:开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  5. 监控Linux性能的18个命令行工具

    监控 Linux 性能的 18 个命令行工具 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保 ...

  6. [转载]监控 Linux 性能的 18 个命令行工具

    转自:http://www.kuqin.com/shuoit/20140219/338066.html 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一 ...

  7. linux下C++开发工具

    就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...

  8. 监控 Linux 性能的 18 个命令行工具[转]

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...

  9. 监控 Linux 系统的 7 个命令行工具

    监控 Linux 系统的 7 个命令行工具: " 深入 关于Linux最棒的一件事之一是你能深入操作系统,来探索它是如何工作的,并寻找机会来微调性能或诊断问题.这里有一些基本的命令行工具,让 ...

随机推荐

  1. 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...

  2. DQN(Deep Q-learning)入门教程(三)之蒙特卡罗法算法与Q-learning算法

    蒙特卡罗法 在介绍Q-learing算法之前,我们还是对蒙特卡罗法(MC)进行一些介绍.MC方法是一种无模型(model-free)的强化学习方法,目标是得到最优的行为价值函数\(q_*\).在前面一 ...

  3. [安卓自动化测试] 001.UIAutomator初探

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  4. JavaScript几种继承方式的总结

    1.原型链继承 直接将子类型的原型指向父类型的实例,即"子类型.prototype = new 父类型();",实现方法如下: //父类构造函数 function father(n ...

  5. java方式实现插入排序

    一.基本思想 通过构建有序序列,从前往后扫描未排序序列,依此取出未排序序列元素,然后从后往前扫描有序序列,找到相应位置并插入.该算法一个进行n-1趟插入,每一趟插入要进行n-k(k为第k趟插入)次比较 ...

  6. 微信小程序支付(企业支付给用户零钱)

    内容摘要:本案例客户端支付方式为微信小程序支付(JSAPI).商户运营一段时间后,在微信商户平台开通企业支付服务后,即可调用微信支付提供的企业付款接口将佣金等金额通过微信零钱返现给C端用户零钱. 服务 ...

  7. jchdl - GSL实例 - DLatch(D锁存器)

    https://mp.weixin.qq.com/s/c8kDgye50nKJR4tkC0RzVA D锁存器对电平敏感,当使能位使能时,输出Q跟随输入D的变化而变化.   ​​ 摘自康华光<电子 ...

  8. Java实现 LeetCode 709 转换成小写字母(ASCII码处理)

    709. 转换成小写字母 实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hell ...

  9. Java实现 蓝桥杯VIP 算法提高 士兵排队问题

    算法提高 士兵排队问题 时间限制:1.0s 内存限制:256.0MB 试题 有N个士兵(1≤N≤26),编号依次为A,B,C,-,队列训练时,指挥官要把一些士兵从高到矮一次排成一行,但现在指挥官不能直 ...

  10. Java实现 洛谷 P2141 珠心算测验

    import java.util.LinkedList; import java.util.Scanner; public class Main { private static Scanner ci ...