数据库内核分析实践指导ppt培训课件

上传人:aa****6 文档编号:57373819 上传时间:2018-10-21 格式:PPTX 页数:29 大小:1.94MB
返回 下载 相关 举报
数据库内核分析实践指导ppt培训课件_第1页
第1页 / 共29页
数据库内核分析实践指导ppt培训课件_第2页
第2页 / 共29页
数据库内核分析实践指导ppt培训课件_第3页
第3页 / 共29页
数据库内核分析实践指导ppt培训课件_第4页
第4页 / 共29页
数据库内核分析实践指导ppt培训课件_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《数据库内核分析实践指导ppt培训课件》由会员分享,可在线阅读,更多相关《数据库内核分析实践指导ppt培训课件(29页珍藏版)》请在金锄头文库上搜索。

1、数据库内核分析实践指导,Source Insight、GDB、.,计算机学院 数据管理研究所 彭煜玮 Email: QQ: 810410,提纲,2,代码阅读利器Source Insight 构建自己的代码阅读、调试环境 单机Windows(方案一):SI+VMWare 单机Windows(方案二):SI+Portable Ubuntu 单机Linux:Wine+SI 双机:SI+SSH 源代码的下载、编译 调试跟踪工具GDB 其他资源,Source Insight简介,3,Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C+, C#和Java等程序的

2、分析。Source Insight能分析你的源代码并在你工作的同时动态维护它自己的符号数据库,并自动为你显示有用的上下文信息。 Source Insight不仅仅是一个强大的程序编辑器,它还能显示reference trees,class inheritance diagrams和call trees。Source Insight提供了最快速的对源代码的导航和任何程序编辑器的源信息。 Source Insight提供了快速和革新的访问源代码和源信息的能力。与众多其它编辑器产品不同,Source Insight能在你编辑的同时分析你的源代码,为你提供实用的信息并立即进行分析。,SI下载及安装,4

3、,30天试用版可以从:下载安装过程和所有的Windows软件类似,创建项目,5,构建环境,6,单机Windows(方案一): 在Windows下安装SI阅读代码; 在Windows下安装虚拟机软件如VMWare,在虚拟机中安装Linux,设置好虚拟机和宿主机之间的共享目录,把源代码都放在共享目录中; 所有的编译、调试工作都在虚拟机中进行。优缺点:只需一台机器,不需脱离熟悉的Windows环境;虚拟机会拖慢机器速度,编译调试速度不稳定,用共享目录同步修改的源代码比较麻烦。,构建环境,7,单机Windows(方案二): 在Windows下安装SI阅读代码; 在Windows下安装Portable

4、Ubuntu; 所有的编译、调试工作都在Ubuntu中进行。优缺点:优点同方案一,且占用磁盘空间更小,文件交换更方便。缺点也类同。,构建环境,8,单机Linux: 在Linux下安装Wine模拟器,然后用Wine模拟SI用作代码阅读; 直接用Linux的gcc、gdb编译调试代码。优缺点:原生支持代码编译调试,阅读代码和调试代码可以使用同一份,无需文件同步,效率最高;需要熟悉Linux使用,Wine有时不太稳定。,构建环境,9,双机: 在A机上装Windows、SI和SSH客户端; 在B机上安装Linux; 用A机进行代码阅读或修改,将修改过后的代码用SSH客户端的文件上传功能传送到B机; 在

5、A机上通过SSH远程登录B机然后调试代码。优缺点:效率高,兼顾使用习惯和编译环境;文件传送麻烦,容易出现传错文件的问题,且投资大(需要两台机器)。,源代码下载和编译,10,PostgreSQL的源代码可以在其官网下载: http:/www.postgresql.org 请下载最新的9.0.1版代码阅读PostgreSQL编译时一般需要系统中安装下列软件: readline:命令行编辑的支持库 zlib:数据压缩支持库 flex:词法分析 bison:语法分析,源代码编译,11,PostgreSQL的编译安装和通常的Linux源代码编译安装具有类似的步骤: 解压 configure make m

6、ake install,编译安装后的工作,12,创建或者选择管理DBMS的Linux用户,该用户不能具有root权限,假设为postgres创建数据目录,为postgres用户授权限:Initdb,初始化数据集簇可以两种方式运行: initdb D datadir 设置PGDATA环境变量来指明datadir,直接运行initdb,启动DBMS,13,在postgres用户下,运行pg_ctl start D datadir启动DBMS。如果设置了PGDATA环境变量,-D可以省略。,使用psql等自带工具管理DBMS,14,psql是PG自带的命令行客户端psql l可以列出本地机器上有哪些

7、现成的数据库psql DBNAME可以连接到指定的数据库执行SQL命令或者扩展命令createdb DBNAME创建数据库,dropdb DBNAME删除数据库,GDB简介,GDB主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序中的错误。*运行你的程序,设置所有的能影响程序运行的东西。*保证你的程序在指定的条件下停止。*当你程序停止时,让你检查发生了什么。*改变你的程序。那样你可以试着修正某个bug引起的 问题,然后继续查找另一个bug。,15,如何用GDB调试程序,命令:gdb 进入gdb界面,提示符为(gdb),用命令quit或者q退出。 注意:要用gdb调试的程序应该

8、用gcc -g -o 进行编译。-g是表示生成带源代码调试符号的程序。,16,设置断点,设置断点的命令是:break : 在文件的第几行设置断点break : 在文件的某个函数设断点break都可以简写成b。 查看当前所设置断点的命令:info break 删除断点:delete clear : 辅助命令:list或者l,可以显示程序的源代码,帮助设置断点。,17,开始调试,开始调试的命令:run或者r这个命令会使被调试的程序开始在gdb控制下开始运行,并且会在第一个断点处停下来,屏幕提示将要执行的语句。 让程序带参数运行:run .r .,18,继续程序的方法,单步进入调试命令:step或者

9、s,这个命令在下一条语句为函数时会进入函数内部执行。 单步调试命令:next或者n,这个命令不会进入函数。 继续运行:continure或者c,让程序继续运行,直到碰到下一个断点才暂停。,19,显示变量值、栈内容,显示变量的值:print p 跟踪变量的值:watch 这个命令可以观察一个变量的值。每次中断时都会显示这个变量的值 显示栈中的内容:backtrace或bt,20,GDB的其他功能,指定源代码所在的目录:directory 告诉gdb到DIR指定的目录中寻找当前调试程序的代码文件。 查看程序代码: list显示目前执行程序代码前后各五行的程序代码;或是显示从上次 list 之后的程

10、序代码 list function显示该函数开始处前后五行的程序代码。 list - 上次显示程序代码的前面的十行。,21,GDB的其他功能,until :执行一行程序,若此时程序是在 for/while/do loop 循环的最后一行,则一直执行到循环结束后的第一行程序后停止 (until 指令可简写为 u)。 Finish:执行现行程序到回到上一层程序为止。 print (a=10):更改变量值,将变量 a 的值设定为 10。 disable :暂停某个断点,22,更多,更详细的资料可以查阅gdb的手册,有需要的同学可以向我索取。,23,用GDB调试PG,首先在安装配置PG时需要加上-en

11、able-debug,如下命令:./configure -enable-debug 调试时先用psql连接数据库,然后在psql里执行以下命令得到当前的服务进程pid:Select pg_backend_pid();,如果只打开-enable-debug选项,在gdb里进行调试时,会有一些变量的值无法打印出来,这是因为gcc在进行编译代码时,会进行一定程度的优化。为了能够在调试跟踪时看到所有变量的值的变化情况,我们有必要降低甚至取消优化选项: ./configure -enable-debug CFLAGS=-o0,24,用GDB调试PG(续),用gdb挂接到刚才的进程上:gdb /usr/l

12、ocal/pgsql/bin/postgres 30979其中/usr/local/pgsql/bin/postgres要替换成 你自己的postgres程序的路径,30979是上 一步中得到的pid。 引入源文件:source 源代码目录 设置断点 gdb里用c继续 在psql中执行命令等待gdb运行至断点停住 其他和单进程程序调试相同。 注意:gdb调试PG时,不能关闭psql与数据库之间的连接,25,GDB能帮我们跟踪一切吗?,26,NO!例如initdb的执行过程就很难应用GDB去跟踪,因此GDB能帮我们跟踪95%以上的代码,但是剩余的部分可能还是需要我们用printf去帮助跟踪。,其

13、他资源,27,www.pgsqldb.org,有关PG的中文网站,其中还有PG的中文文档(不过版本还停留在8.0)、WIKI等PG的Mail List、Google、Baidu。PG是由C语言写成,但是整个代码包中包含有多个应用程序(postgres、psql、createdb等等),因此对于一个函数,在SI中搜索时会发现有多处定义,在分析时有必要根据头文件之间的引用关系来确定我们需要查看的函数。另外一种方式是可以只把backend文件夹和include文件夹包含在SI的工程中。,其他的其他,28,PG的商业版本,用户包括NTT(日本,NIPPON Telephone and Telegraph)、Sony Online Entertainment(oraclePG)、Utah State University、AIG等,谢谢!,29,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号