Linux及Windows常用命令
Linux常用命令
gcc编译器
预处理
gcc -E hello.c -o hello.i
将源文件编译成汇编代码文件(.s格式)
gcc -Og -S mstore.c
将源文件编译成可重定位目标文件(.o格式)
gcc -Og -c mstore.c
将可重定位目标文件编译为可执行目标文件
gcc -Og -o prog main.c mstore.c
进程
查看系统上运行的所有进程
ps -ef
查找正在运行的进程并查看状态stat字段的含义
ps aux | grep php-fpm
ubuntu查看进程端口占用情况
sudo netstat -tupan
gdb调试
在编译的时候要加上“-g”选项才可以调试,例如:
gcc -g -o hello main.c mstore.c
开始调试可执行程序
gdb hello
显示源代码,便于设置断点
(gdb) list
(gdb) l
设置断点
(gdb) break main
(gdb) b main
(gdb) b 5
显示所有断点
(gdb) info b
运行程序,r后面可以带可执行文件的参数
(gdb) run
(gdb) r
(gdb) r hello world
单步调试(不进入函数内部)
(gdb) next
(gdb) n
单步调试(进入函数内部)
(gdb) step
(gdb) s
跳到下一个断点
(gdb) c
显示变量i的值
(gdb) p i
调试子进程。gdb默认调试父进程,follow-fork-mode参数值默认为parent,需要设置为child。
(gdb) help set follow-fork-mode
(gdb) show follow-fork-mode
(gdb) set follow-fork-mode child
退出正在调试的函数
(gdb) fin
反汇编与ELF
显示可执行部分的汇编程序内容
objdump -d mstore.o
显示ELF格式文件的信息
readelf -a main.o
vim常用操作
格式化全文代码:gg=G跳到文档末尾:在一般模式下输入G
撤销到上一步:在一般模式下输入u
添加注释:ctrl+v进入块选择模式,上下键选中需要添加注释的位置,按大写I进入插入模式,输入注释符,按ESC退出。
取消注释:ctrl+v进入块选择模式,上下键选中需要取消注释的位置,按小写x删除注释符。
复制:按v进入可视模式,按 y 复制,按
p
粘贴。
软件包
显示所有已安装软件
dpkg -l
查找已安装软件
dpkg -l | grep ftp
查看软件安装的路径
dpkg -L ftp
显示包含此软件包的所有位置
dpkg -S softwarename
显示安装路径
dpkg -L softwarename
可显示 APT 内部数据库里的多种信息
apt-cache show softearename
显示系统已知的软件包列表及其安装状态
dpkg -l softwarename
也可以用
whereis ftp
Windows常用命令
查看端口被哪个进程占用
netstat -ano|findstr 22 tasklist|findstr "12472"
参考链接:
GDB官方手册:Top (Debugging with GDB) (sourceware.org)
GDB多进程调试:GDB多进程调试 - ainingxiaoguai - 博客园 (cnblogs.com)
Linux进程状态:Linux进程状态(ps stat)详解 - 火星小编 - 博客园 (cnblogs.com)
《Linux命令行与shell脚本编程大全》学习笔记 - 蓝天,白云 - 博客园 (cnblogs.com)