当前位置:首页 » 操作系统 » linux调试

linux调试

发布时间: 2022-01-08 13:48:46

1. 如何在linux系统下调试C++程序

http://blog.csdn.net/wfdtxz/article/details/7368357

GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能:
启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
当程序被停住时,可以检查此时你的程序中所发生的事。
动态的改变你程序的执行环境。
从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。

gdb基本命令列表:

实例:
1 新建一个源文件vi swap.cc

源文件内容如下:
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int main()
{
int i,j;
cout<<endl<<"Input two int number:"<<endl;
cin>>i>>j;
cout<<"Before swap(),i="<<i<<" j="<<j<<endl;
swap(i,j);
cout<<"After swap(),i="<<i<<" j="<<j<<endl<<endl;
return 0;
}
直接复制粘贴生成源文件
2.生成可执行文件 g++ -g -o swap swap.cc,注意必须使用-g参数,编译会加入调试信息,否则无法调试执行文件

3.启动调试 gdb swap

3.1 查看源文件 list 1,回车重复上一次指令

3.2设置调试断点 break 16,在第16行设置断点,info break查看断点信息(亦可使用缩写i b )

3.3 调试 运行 输入run 或者r

3.3 单步调试,step 或者 s进入函数内部

3.4查看变量 print b 或者 p b

3.5查看函数堆栈bt,退出函数finish

3.6 继续运行直到下一个断点或主函数结束continue或者c

3.7 退出调试 输入q

2. 如何调试Linux shell脚本

最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间。
shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。
shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误。
linux/unix shell l脚本调试方法
Shell提供了一些用于调试脚本的选项,如下所示:
-n
读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来
使用这些选项有三种方法,一是在命令行提供参数
$ sh -x ./script.sh二是在脚本开头提供参数
#! /bin/sh -x第三种方法是在脚本中用set命令启用或禁用参数
#! /bin/sh
if [ -z "$1" ]; then
set -x
echo "ERROR: Insufficient Args."
exit 1
set +x
fiset -x和set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。

3. linux 汇编工具以及调试

当然是
gcc
+
gdb
不过gcc/gdb

AT&T
风格的汇编,和
dos/win32
下的
Intel
风格不太一样,你要去了解一下具体区别。
.s
文件表示汇编源码文件,
可以用gcc
编译,比如
gcc
-g
a.s
-o
a.exe
然后就可以用
gdb
a.exe
来调试了,用
print
$eax
来显示
eax
寄存器,等等。
具体
gdb
命令自己搜索了解一下。
下面给个入门例子,把下面代码存入
a.s

就可以在
linux
下用我上面说的方法编译和调试了:
hello:
.string
"Hello
world\n"
.globl
main
main:
movl
$4,
%eax
movl
$1,
%ebx
movl
$hello,
%ecx
movl
$12,
%edx
int
$0x80
ret

4. linux里面如何单步调试

1编译的时候加入调试,2运行时设置断点或单步执行;

春节时还玩来着,现在.....忘的差不多了

5. Linux下gdb调试的几个简单命令

和在IDE上差不多,无非是单步 继续 断点之类的
list列出代码
run运行
step单步
break断点
watch查看变量
。。。。

6. linux内核调试的主要方法

1。printk ,以及系统日志。阅读源码,想象代码运行的情况,结合打印的信息,推测问题所在。

2。内核调试器,例如 Kgdb 。

3。user mode linux 。

4。在虚拟机上调试。例如 Bochs 。

7. linux 编程工具怎么断点调试

编译:gcc -o xxx xxx.c 调试:gcc -o xxx -g xxx.c gdb xxx run break line(行数)或函数名 info 查看断点 n 下一步 print +变量 打印变量值 q 退出调试 c 继续执行到下一个断点

8. 怎么在linux系统下调试程序

(1)假设要debug的进程号为1000,运行如下命令:
$ gdb -p 1000
使用此命令即可使gdb附加到进程。
(2)载入libpython脚本
如果你的gdb是redhat或fedora等厂商修改过的,会有--python选项,使用此选项即可指定gdb启动时载入的Python扩展脚本(此脚本是扩展gdb的,不是我们需要debug的脚本)。
$ gdb --python /path/to/libpython .py -p 1000
如果安装的是GNU的gdb,就需要打开gdb后手动载入libpython.py脚本
(gdb) python
> import sys
>sys.path.insert(0, '/path/to/libpython.py' )
> import libpython
>end
(gdb)
这时就可以使用py-bt命令打印当前线程的Python traceback了。libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。

热点内容
5日线的算法 发布:2024-12-25 12:43:56 浏览:742
安卓换苹果手机了照片怎么恢复到新手机上 发布:2024-12-25 12:36:18 浏览:64
自动化安装脚本 发布:2024-12-25 12:35:30 浏览:445
电脑采用的服务器 发布:2024-12-25 12:25:59 浏览:644
php网页的验证码 发布:2024-12-25 12:25:02 浏览:648
php季度 发布:2024-12-25 12:11:55 浏览:230
编程电缆制作 发布:2024-12-25 12:09:27 浏览:726
php怎么重启 发布:2024-12-25 12:09:26 浏览:524
魔兽脚本组队 发布:2024-12-25 12:03:35 浏览:495
在线直播加密 发布:2024-12-25 11:53:12 浏览:575