调试命令 |
|
gcc -g |
编译源码确保含有-g的参数 |
gdb ./app |
启动gdb并开始调试程序app |
(gdb)set args x1 y1 |
设置app运行的参数(./app x1 y1) |
(gdb) r |
开始运行程序(run的简写) |
(gdb) l |
列举调试的源码(list的简写) |
(gdb) b 16 |
在代码16行设置断点 |
(gdb)b main.cpp:12 |
在main.cpp文件的12行设置断点 |
(gdb)b onRecv |
在onRecv函数设置断点 |
(gdb)info break |
查看所有的断点 |
(gdb)info break 3 |
查看第3个断点 |
(gdb)n |
单行执行,有函数不会进入函数(next简写) |
(gdb)s |
单步执行,有函数会跳入函数(step简写) |
(gdb)finish |
退出函数 |
(gdb)c |
继续运行(continue简写) |
(gdb)q |
退出调试(quit简写) |
(gdb)p a |
int a = add(1,2); 如果在上述代码附近设置断点后,查看a的值(print的简写) |
常见编译命令 |
|
编译静态库 |
gcc –c test.c #生成test.o ar rcs libtest.a test.o #生成test静态库 |
连接共享库 |
./app –L/XX/XX/ libtest.a #-L指定libtest.a静态库的路径(可相对路径) |
编译共享库 |
gcc –c test.c gcc -shared -fPIC -o libtest.so test.o |
连接共享库 |
./app –ltest export LD_LIBRARY_PATH= 共享库路径:$ LD_LIBRARY_PATH #共享库路径为 存放libtest.so的路径 #或直接拷贝共享库到/lib/、/usr/lib目录下) |
查看共享库 |
ldd test 或者 ldd libtest.so #查看程序/共享库依赖的其他共享库 nm libtest.so #查看共享库中的符号表信息 |
条件编译 make -DCNSU |
针对代码如下: #ifdef CNSU … #endif |
Make前配置 |
./configure --prefix=/opt #指定源码编译后make install的安装位置 |
跟踪命令的系统调用 |
|
strace –o log.txt app |
执行app程序,并将其涉及的所有系统调用输出到log.txt中 |
strace –o log.txt –p pid |
查看指定进程号的程序对应的系统调用的过程 |
|
|
|
|
内存泄露检测 |
|
安装valgrind |
Yum install valgrind |
生成内存泄露信息 |
valgrind --tool=memcheck --leak-check=yes --log-file=mem.txt ./app #生成app程序的内存泄露的信息,结果存到mem.txt中 |
definitely lost |
肯定泄露部分 |
possibly lost |
可能泄露部分 |
indirectly lost |
间接泄露 |
Vi命令使用 |
|
vi main.cpp |
编辑main.cpp文件 |
I |
进入编辑模式 |
ESC |
退回命名模式 |
Shift + : |
输入命令界面 |
Shift + : + wq |
保存退出 |
Shift + : + q! |
强制退出,不保存 |
/key |
从光标处向前查找 |
?key |
从光标处向后查找 |
YY |
拷贝光标所在的行 |
p |
粘贴拷贝的行 |
DD |
删除光标所在的行 |
:set ff |
查看文件的编码格式 |
:set ff=unix |
修改编码格式为unix ,等效于 dos2unix fname |
进程管理的命令 |
|
ps -ef |
列出所有的进程列表 |
top |
动态实时显示进程使用的内存、CPU等信息 |
Killall app |
杀死所有以app为命名的程序 |
Kill -9 pid |
杀死进程号为pid的进程 |
|
|
常见网络相关命令 |
||
lsof –i:80 |
列出监听端口80的程序列表 |
|
Ifconfig |
查看网络配置 |
|
Ifconfig eth0 192.168.2.99 |
设置网卡eth0的IP为192.168.2.99 |
|
常见权限修改 |
||
Chmod 777 –R ./ |
将文件修改为rwx最高权限 |
|
Chmod –cR 775 file |
将777的文件权限修改降低 |
创/删/拷基础命令 |
|||
Mkdir –p /a/b/c |
创建多级目录 |
||
\cp a.txt /home |
追加\前缀,拷贝文件时,如果存在覆盖的情况不会提示(强制覆盖) |
||
账户管理 |
|||
添加账户 |
Useradd xiaoming |
||
删除账户 |
Userdel xiaoming |
||
为smb添加密码 |
Smbpass –a xiaoming |
||
挂载 |
|||
df -h |
查看新插入U盘后对应的路径(如:/dev/sdb1) |
|
|
挂载U盘到/mnt/usb下 |
Mkdir –p /mnt/usb Mount /dev/sdb1 /mnt/usb |
||
|
|
||
链接命令 |
|||
软连接 |
ln –s log.txt log_link.txt #后者log_link.txt为软链接文件 #即 log_link.txt à log.txt |
||
硬链接 |
ln log.txt log_hard.txt #后者log_hard.txt为硬链接 |
||
|
|
||
MySql常见命令 |
|||
连接数据库 |
>mysql –h 192.168.2.99 –uroot –pdonica_wifi #连接主机192.168.2.99,数据库账户(root,donica_wifi) |
||
修改数据库密码 |
> mysqladmin –uroot -p旧密码 password 新密码 #修改root用户的密码 |
||
增加新用户 |
|
||
登陆/查看默认用户 |
mysql -udebian-sys-maint –p select user(); |
||
sed |
|||
|
|
||
|
|
||
|
|
||
awk |
|||
|
|
||
|
|
||
|
|
||
grep |
|||
|
|
||
|
|
||
|
|
||
其它查找命令 |
|||
快速查找文件 |
locate smb.conf #基于db数据库索引查找文件(速度远胜find) |
||
更新文件索引 |
updated #配合locate进行更新文件索引 |
||
|
|
||
|
|
||
|
|
||
Makefile常用语法 |
|||
|
|
||
|
|
||
|
|
||
Shell常用语法 |
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
Linux常用服务 & 配置文件 |
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|