怎样进行gdbattach进程调试-创新互联

本篇文章为大家展示了怎样进行gdb attach 进程调试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联公司,专注为中小企业提供官网建设、营销型网站制作、成都响应式网站建设公司、展示型成都网站设计、成都网站制作、外贸网站建设等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。

gdb调试正在运行的进程:

GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行

(gdb) attach xxxxx --- xxxxx为利用ps命令获得的子进程process id
(gdb) stop --- 这点很重要,你需要先暂停那个子进程,然后设置一些断点和一些Watch
(gdb) break 37 -- 在result = wib(value, div);这行设置一个断点,可以使用list命令察看源代码
Breakpoint 1 at 0x10808: file eg1.c, line 37.
(gdb) continue
Continuing.

Breakpoint 1, main () at eg1.c:37
37                              result = wib(value, div);
(gdb) step

在完成调试之后,不要忘记用detach命令断开连接,让被调试的进程可以继续正常运行。

我们可以通过  1)  gdb prog_name -> r               用在逐步调试自己的程序时

                   2)  gdb -> attach process_id       正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach

                   3)  gdb prog_name core              程序core掉了

三种方式对一个程序进行调试;

1. thread——gdb 多线程调试命令:

    info threads:           显示当前进程中的线程;

    thread thread_no:  进入线程xx,通常紧接而来的是 bt/f 命令;

2. strace/ltrace:

    前者关注系统调用和程序所接收的信号;后者关注库函数调用;

    strace的应用在 我们没有程序的源码,或者不方便从头开始运行程序时;可以方便查看一个应用程序进行了哪些系统调用。

    而在希望知道程序都调用了动态库中的哪些函数时,我们使用 ltrace。ltrace有个-S选项,类似于strace功能。

3.检查内存泄漏的工具:

   valgrind (in linux, free) 
   visual leak detector (windows , free)
   boundschecker(windows, free)

   profile工具:
   oprofile
   vtune

上述内容就是怎样进行gdb attach 进程调试,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联网站制作公司行业资讯频道。


文章标题:怎样进行gdbattach进程调试-创新互联
本文网址:http://ybzwz.com/article/dghpep.html