当前位置:首页 > 我的程序 > 正文内容

几种在linux中的调试器的编译结果。

Peirre6年前 (2020-02-21)我的程序1197

很多人用源码进行编译,会不成功,原因有很多,我现在讲讲linux 下必有的gdb调试器来说明一下。

我用的linux 系统 是 优麒麟 19.04.10.1 加强版,属于试用版。

随系统自带的gdb是8.3这个版本,我认为太老了。

现在新出的是gdb 9.1这个版本,说实话,linux 下的调试器有很多,cgdb pice 等免费的。

gdb 最新版可以在 http://www.gnu.org/software/gdb/download/这个地方下载。

是发行版,还不错。实际上gdb不止这些基本功能,我也不太懂怎么用。比效一下8.3和9.1的可执行文件内容,一个几十兆,一个一百多兆。内容加了很多,可以加X服务界面前端。

下载下来是源码。

有些linux 下的源码认编译器的版本,所以保留一些编译器版本还是有必要的。如gcc 4.8版本和gcc 4.9版本就比较好用,现在编译器的包含文件头很乱,还分了很多流派,够用就停,别管太多。那个stdc.a,stdc.lib和stdc++.a,stdc++.lib一直是c,和c++的标准库和编译器自带的包含文件大体一样,一般的使用,这个共享开发包就已经不错了。

我不是职业编译者,所以没怎么保留,因为系统自带的编译器是gcc 9这个版本。因为编译器的头文件的差异,很多软件会编译不成功。

完整的gdb 编译很简单,很多头文件已经包括在gdb 的目录内了。很多源码是没有其它的第三方头文件的。要搭配自己的环境才会编译成功。

gdb 源码自动化层度很高。源码中的README这个文件一定要看的,有些补漏或方法一定在里面。

gdb 要你在 gdb 目录中自己建立一个build这个目录。

进入build目录之后然后打上全路径加一configure这个自动化配置文件。

configure这个脚本是判断系统的工具和编译环境的。

可以看生成的config.log,它是记录系统的配置的一个文件

然后输入make这个命令就可以建造了,如果用sudo make 可以完全建造,不用也行,不会代替系统文件。

这调试器不依赖其它的文件,所以没有缺文件的事情。如果目录不对,会出现缺少文件的情况。说明编译环境不正确。

生成完以后,在build 目录下多了一个gdb文件目录 那个gdb文件可以用了。

这事情没完,我们再升一级。

说好gdb 是gnu的免费使用软件,现在英伟达做GPU显卡的公司出的开源软件

https://developer.download.nvidia.cn/compute/cuda/opensource/

这个目录都是开源项目。其中cuda-gdb-10.1.243这个开源linux 下的调试软件可以调试显卡GPU代码。

我们download 下来看看。

我们已经熟悉了gdb的调试软件的编译,看来这个也不例外。

mkdir build

cd build

[全路径文件目录]/configure

make

最后编译错误,看见错误提示了没。

In file included from /home/nantz/下载/cuda-gdb-10.1.243/readline/display.c:53:
/home/nantz/下载/cuda-gdb-10.1.243/readline/tcap.h:33:12: fatal error: termcap.h: 没有那个文件或目录
   33 | #  include <termcap.h>
      |            ^~~~~~~~~~~
compilation terminated.
这个分享源码差一个文件,没办法,在源码中并没找到这个文件,所以程序中止了。

编译不成功,有termcap.h再继续。

还有一个调试器源码就是pice 类似以前的soft-ice 界面。没有使用,要在32位系统上用,由于没有64位代码显示。所以没有使用,自己可以编译试试,可以通过,有一定的配置难度。




分享给朋友:

相关文章

windows 10 控制台命令壳的常规命令。

windows 10 控制台命令壳的常规命令。

windows 10 和 linux 一样有一个控制台,最初也叫文字终端。命令是 cmd.exe  在 windows xp 和 windows 2000 以前是 command.exe经过...

Blender 如何建立.mash 和.x文件。(关于Directx 11,OGRE图形库与Blender)

Blender 如何建立.mash 和.x文件。(关于Directx 11,OGRE图形库与Blender)

OGRE图形开发库已经发展很多年了,因为它是免费开源项目,所以使用还很广泛。OGRE图形库应用须要3d图形数据文件,OGRE图形库默认的是.mash 我们有方法制作它。.mash 文件任何3d应用软件...

Fasm 汇编语言和 SSE指令

Fasm 汇编语言和 SSE指令

用fasm汇编语言编译器编译测试代码,编译正常,运行有异常。SSE 指令和 MMX指令的区别是寄存器不一样,MMX是,mm0-mm7,SSE是XMM0-XMM7,SSE2是 XMM8-XMM15,扩展...

MASM for WINDOWS 编程中的 MASM32 调试 VKDEBUG 用法。

MASM for WINDOWS 编程中的 MASM32 调试 VKDEBUG 用法。

masm32 是微软官方独立的家寓户晓的汇编语言,加上SDK可以在通用的windows 操作系统上编程。其中有个masm32 DEBUG 模块,现在介绍一下用法。SDK 已经包含在安装文件中了,要重新...

我这里有一段没有编完的蜘蛛纸牌外挂汇编源码,有谁可以完成它?

我这里有一段没有编完的蜘蛛纸牌外挂汇编源码,有谁可以完成它?

源码下载地址:SpiderPoker2.zip[蜘蛛纸牌外挂汇编源码]请大大努力把它编好。继:本来是一点点交的,耐不住寂寞给了把。另外一个VC源码:SpiderHook.zip再继:还有一个命令行的,...

CPUID指令功能,附源码和程序。

CPUID指令功能,附源码和程序。

程序源码和程序:CPUID.zip[bits 32] ;Nasm win32 CPUID 功能演示 ; ;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓...