|
调试命令 | |
|
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常用服务 & 配置文件 | |||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
|
|
| ||
本文档汇总了软件开发过程中的各种调试与编译命令,包括GCC与GDB的使用方法,系统进程管理,文件操作及权限修改命令,还有网络配置与数据库连接等实用技巧。
199

被折叠的 条评论
为什么被折叠?



