ubuntu14怎样编译和调试linux0.11

ubuntu14怎样编译和调试linux0.11,第1张

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误

In file included from /usr/include/features.h:378,

from /usr/include/assert.h:37,

from ../../../include/tinyxml/tinystr.h:42,

from ../../../src/tinyxml/tinystr.cpp:32:

/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录

这时候需要安装 gcc所有支持文件 sudo apt-get install gcc-multilib

将会安装下列额外的软件包:

cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1

DEV-C是个IDE,它的编译器是MinGW

一、使用单步调试和观察变量的步骤:

1.

编译通过(ctrl+F9)

2.

设置断点(ctrl+F5)

3.

调试(F8)

4.

增加观察变量(在左边的debug观察窗口右键增加或者F4)

5.

单步调试:F7

6.

结束调试:ctrl+alt+f2

简单来说,它有两种方式,一种是源码debug,即分析源码来找出bug位置,一般使用printf()打印出程序执行每一步的信息,一种是可执行文件debug,需要使用调试器来进行。

1.源码debug。类似于下面的源码,主要通过程序执行时输出的信息,来定位bug出现的位置,然后再修改源码。

例如:

#include

<stdio.h>

void

f()

{

}

int

main(){

#ifdef

_DEBUG

printf("start

main

function!\n")

#endif

void

f()

#ifdef

_DEBUG

printf("leave

main

function

!\n")

#endif

return

0

}

2.可执行文件调试,windows平台常用的就是vs/vc自带的调试,另外一个就是微软自家开发的调试器windbg。Linux平台以gdb为常用。

下面以dev-C++为例:

1)在“工具”-》编译选项-》"编译时加入以下命令"下面的编辑框里加上:

-g3

2)在下面的"在连接器命令行加入以下命令"

下的编辑框上加上:

-g3

3)转到程序页,把gcc行修改为:gcc.exe

-D__DEBUG__,

4)把g++行修改为:

g++.exe

-D__DEBUG__

5)点击确定,重新编译,就能调试了。

Linux调试程序大多数都是喜欢用gdb,gdb是一个命令行界面的程序调试工具,任何调试 *** 作都是输入命令来实现的。从Windows过来的程序员可能不习惯用gdb这个调试器,可以去试试一些图形界面的的调试器,比如Kgdb、Affinic GUI Debugger,这两款调试器虽然是图形界面的调试器,但是它其实是调用gdb来完成它的调试功能的,也就是说它们其实是gdb的一个图形界面的外壳,所以要先安装好gdb再安装它们,不习惯gdb的命令界面的话,可以试试这两款软件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8932414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存