Linux编程学习摘记

使用GDB调试程序使用手记
gdb是调试应用程序的一个命令行下的工具。用了用,下面是心得:
以调试processtest可执行文件为例子。
1)  gdb processtest
2)  设置一个断点,不然程序一下子就执行完了,什么也调试不成。Break 5,表明断点在第5行。删除断点用clear 5即可。
3)  键入run,执行开始,并在第5行停止。
4)  下面就可以用很多命令了。
l         "print <symbol>"显示一个符号。
l         "whatis <symbol>"显示符号类型。
l         "list"显示源代码的下10行。
l         "list <symbol>"显示符号类型的源代码。
l         "list-"显示最后10行代码。
l         "info registers"显示所有的注册。
l         "disassemble"为分解器。
l         "where"显示调用堆栈。
l         "up"为上升的堆栈结构。
l         "down"为下降的堆栈结构。
l         "display <symbol>"为程序停止时显示一个符号。
文件方面的操作
open函数有两个形式.其中pathname是我们要打开的文件名(包含路径名称,缺省是认为在当前路径下面).flags可以去下面的一个值或者是几个值的组合.
O_RDONLY:以只读的方式打开文件.
O_WRONLY:以只写的方式打开文件.
O_RDWR:以读写的方式打开文件.
O_APPEND:以追加的方式打开文件.
O_CREAT:创建一个文件.
O_EXEC:如果使用了O_CREAT而且文件已经存在,就会发生一个错误.
O_NOBLOCK:以非阻塞的方式打开一个文件.
O_TRUNC:如果文件已经存在,则删除文件的内容.
前面三个标志只能使用任意的一个.如果使用了O_CREATE标志,那么我们要使用open的第二种形式.还要指定mode标志,用来表示文件的访问权限.mode可以是以下情况的组合.
-----------------------------------------------------------------
S_IRUSR 用户可以读 S_IWUSR 用户可以写
S_IXUSR 用户可以执行 S_IRWXU 用户可以读写执行
-----------------------------------------------------------------
S_IRGRP 组可以读 S_IWGRP 组可以写
S_IXGRP 组可以执行 S_IRWXG 组可以读写执行
-----------------------------------------------------------------
S_IROTH         其他人可以读    S_IWOTH         其他人可以写
S_IXOTH         其他人可以执行  S_IRWXO         其他人可以读写执行
-----------------------------------------------------------------
S_ISUID 设置用户执行ID  S_ISGID 设置组的执行ID
-----------------------------------------------------------------
我们也可以用数字来代表各个位的标志.Linux总共用5个数字来表示文件的各种权限.
00000.第一位表示设置用户ID.第二位表示设置组ID,第三位表示用户自己的权限位,第四位表示组的权限,最后一位表示其他人的权限.
每个数字可以取1(执行权限),2(写权限),4(读权限),0(什么也没有)或者是这几个值的和.
比如我们要创建一个用户读写执行,组没有权限,其他人读执行的文件.设置用户ID位那么我们可以使用的模式是--1(设置用户ID)0(组没有设置)7(1+2+4)0(没有权限,使用缺省)5(1+4)即10705:
open("temp",O_CREAT,10705);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwxyg.html