Linux环境高级编程实验
实验一 编程环境实验 基本环境搭建 高级vi的使用 make的使用 gdb的使用
实验一 编程环境实验 基本环境搭建 高级vi的使用 make的使用 gdb的使用 googletest的使用 valgrind的使用
基本环境搭建 网络环境配置 APT工具使用 SecureCRT配置
网络环境配置---NAT方式 虚拟机菜单:VM----Settings….------选择Hardware标签,选择Network Adapter,选择NAT
网络环境配置 由于是复制虚拟机,可能出现下列情况
网络环境配置
网络环境配置 修改/etc/network/interfaces文件 文件内容: auto eth1 假设当前网卡名称是eth1,从dmesg | grep eth 命令中获知的 iface eth1 inet static address 192.168.18.20 netmask 255.255.255.0 gateway 192.168.18.2
网络配置 接下来需要确定虚拟机的IP地址是多少。 虚拟机菜单:Edit----Virtual Network Editor ------选择NAT标签
网络配置 添加DNS: 在/etc/resolv.conf中添加 nameserver 202.112.14.151 或
主机名配置 访问/etc/hostname文件 将主机名设为你的姓名拼音------以此杜绝抄袭实验报告 重启操作系统 #reboot
网络配置 重新启动网络: 检查网络: #/etc/init.d/networking restart #ping www.uestc.edu.cn
加入学校APT源 APT从预选设置好的软件源下载软件包 学校提供了高速的软件下载源 在/etc/apt/sources.list开头处加入学校提供的软件源 http://ubuntu.uestc.edu.cn VMWare中的已经有快照 执行更新 #apt-get update
APT工具 Linux操作系统上安装软件,非常复杂 APT工具 软件之间非常复杂的依赖关系 复杂的配置、编译、安装过程 安装时自动维护软件之间的依赖关系 自动的配置、编译、安装过程
Cache存放:软件元数据,如名称,依赖关系 APT工具 APT源服务器 存放:各种软件源码、软件名称、依赖关系 我们的机器 Cache存放:软件元数据,如名称,依赖关系
APT工具 修改apt源,即添加APT服务器地址 检索软件信息 /etc/apt/sources.list #apt-get update 使修改生效 检索软件信息 #apt-cache pkgnames 显示所有可以安装的软件 #apt-cache pkgnames | grep g++ #apt-cache policy 软件名称 查看该软件是否安装
APT工具 安装 重新安装 卸载 清理 #apt-get install 名称 #apt-get install --reinstall 名称 卸载 #apt-get remove 名称 清理 #apt-get clean 清楚deb包
APT工具 获取源码包 构建编译环境 编译源码包 安装 #apt-get source 名称 下载并在当前目录下解压 #apt-get build-dep 名称 安装关联的软件包 编译源码包 #dpkg-buildpackage 生成可执行文件和deb 安装 #dpkg –I *.deb
SecureCRT配置 安装openssh 检查结果 使用SecureCRT连接 #apt-get install openssh-server 检查结果 #ps –ef | grep ssh 若未找到, #/etc/init.d/ssh restart 使用SecureCRT连接
文件传输 #apt-get install lrzsz #rz 向Linux服务发送文件 #sz 文件名 Linux服务器向客户端发送文件
编程环境 #apt-get install build-essential
压缩工具 #apt-get install zip
实验一 编程环境实验 基本环境搭建 高级vi的使用 make的使用 gdb的使用 googletest的使用 valgrind的使用
vi的使用(示例) 进入vi #vi [filename] (示例) vi的三种工作模式 指令行模式 文本输入模式 行末模式
vi的三种工作模式(示例) Command Mode Insert Mode Last Line Mode 键入Esc 输入i、a或o 输入冒号 Insert Mode Last Line Mode
vi的基本使用(示例) 查找字符串(指令模式下) 替换字符串(行末模式下) /字符串 查找下一个:n 查找上一个:N :n1,n2s/word1/word2/gc 在[n1,n2]行之间,用word2替换word1,c用于询问是否要替换 可用$代表最后一行
vi的基本使用(示例) 删除操作(指令模式下) 复制操作(指令模式下) 粘贴操作(指令模式下) 恢复操作(指令模式下) dd:删除光标所在行 ndd:删除光标所在的向下n行 d1G:删除光标所在行到第一行 dG:删除光标所在行到最后一行 复制操作(指令模式下) 将上述dd,替换为yy 粘贴操作(指令模式下) p:复制的数据在光标的上一行粘贴 恢复操作(指令模式下) u
vi的基本使用(示例) 行末模式下 :q 退出vi :q! 强制退出vi :w 保存 :w filename 另存为 :wq 保存退出 :! Command 执行操作系统的命令,ls等 :set nu 显示行号
vi的基本使用(示例) 到指定行 打开多个文件 G:到文件尾 nG:到第n行 :n:到第n行 :split 文件名:水平分割 :vsplit 文件名:纵向分割 :quitall:关闭所有窗口
vi的基本使用(示例) 区域操作 在指令行模式下,按下v,移动光标,选中区域;可以再按下v,取消选择 复制该区域:y 粘贴该区域:p 删除该区域:d 剪切该区域:x
vi插件 需要安装的插件 exuberant-ctags (使用apt) cscope (使用apt) taglist omnicppcomplete a winmanager minibufExplorer grep
Vi插件 安装说明 Ctags,cscope使用apt安装 其他的需要下载,解压到~/.vim即可 分析.vimrc文件(示例)
实验一 编程环境实验 基本环境搭建 高级vi的使用 make的使用 gdb的使用 googletest的使用 valgrind的使用
make的使用 进行实际程序开发时,由于涉及到众多的源文件、头文件、依赖库等等,因此,编译指令可能会很长 每次书写浪费时间,效率过低 解决方案: 使用make工具,进行编译操作
实验一 编程环境实验 基本环境搭建 高级vi的使用 make的使用 gdb的使用 googletest的使用 valgrind的使用
gdb的使用 进入gdb(使用apt安装gdb) 查看当前文件 设置断点 使用-g选项编译,加入调试信息 #gdb 要调试的可执行文件名 >list >list 文件名:行号 设置断点 >break 行号
gdb的使用 清除断点 运行调试 查看变量值 >clear 行号 >run >continue >display 表达式
gdb的使用 监控表达式的值 执行下一语句 查看汇编代码 >watch 表达式 >step >next >disass
gdb的使用 查看寄存器 查看内存区域 >info registers >x /10xb 地址/产生地址的表达式 以16进制查看大小为10字节的内存区域
gdb调试多进程 多开一个终端,以监控子进程 子进程中,进入实际代码前,加上sleep(60),以方便获取子进程ID 在新开的终端中,在进程的工作目录内,运行 #gdb (gdb) attach 子进程ID (gdb) break 行号 (gdb) continue
gdb调试多线程 同时只能调试一个线程 查看当前线程 线程间切换 当调试一个线程时,其他线程都不运行 注意,当在线程间切换时,打好返回的断点 info thread 线程间切换 thread 线程ID(gdb分配的id) 当调试一个线程时,其他线程都不运行 set scheduler-locking on run之后才能输入该命令 注意可能要用continue 注意,当在线程间切换时,打好返回的断点