[root@bogon demo]# gdb
GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
...... <-- 省略部分输出信息
Type "apropos word" to search for commands related to "word".
(gdb)
//存储路径为 /tmp/demo/main.c //其生成的可执行文件为 main.exe,位于同一路径下 #include<stdio.h> int main(int argc,char* argv[]) { FILE * fp; if((fp = fopen(argv[1],"r")) == NULL){ printf("file open fail"); } else{ printf("file open true"); } return 0; }
[root@bogon ~]# gdb -q <-- 使用 -q 选项,可以省略不必要的输出信息
(gdb) l
No symbol table is loaded. Use the "file" command.
(gdb) file /tmp/demo/main.exe
Reading symbols from /tmp/demo/main.exe...
(gdb) l
1 #include<stdio.h>
2 int main(int argc,char* argv[])
3 {
4 FILE * fp;
5 if((fp = fopen(argv[1],"r")) == NULL){
6 printf("file open fail");
7 }
8 else{
9 printf("file open true");
10 }
(gdb)
11 return 0;
12 }
(gdb)
[root@bogon demo]# gdb --args main.exe a.txt
整个指令的意思是:启动 GDB 调试器调试 main.exe 程序,并为其传递 "a.txt" 这个字符串(其会被 argv[] 字符串数组接收)。(gdb) set args a.txt
该命令表示将 "a.txt" 传递给将要调试的目标程序。
(gdb) run a.txt
(gdb) start a.txt
(gdb) cd /tmp/demo
由此,GDB 调试器的工作目录就变成了 /tmp/demo。
(gdb) path /temp/demo
Executable and object file path: /temp/demo:/usr/local/sbin:/usr/local/bin...
(gdb) run > a.txt
由此,在 GDB 调试的工作目录下就会生成一个 a.txt 文件,其中存储的即为 main.exe 的执行结果。
[root@bogon demo]# pwd <--显示当前工作路径
/tmp/demo
[root@bogon demo]# ls <-- 显示当前路径下的文件
a.txt main.c main.exe
[root@bogon demo]# cd ~ <-- 进入 home 目录
[root@bogon ~]# gdb -q <-- 开启 GDB 调试器
(gdb) cd /tmp/demo <-- 修改 GDB 调试器的工作目录
Working directory /tmp/demo.
(gdb) file main.exe <-- 指定要调试的目标文件
Reading symbols from main.exe...
(gdb) set args a.txt <-- 指定传递的数据
(gdb) run <-- 运行程序
Starting program: /tmp/demo/main.exe a.txt
file open true[Inferior 1 (process 43065) exited normally]
本文链接:http://task.lmcjl.com/news/16452.html