📄 gdb-7-1.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://www.linuxforum.net/books/LinuxFAQ/program-gdb-b.html -->
<HTML><HEAD><TITLE>BBS水木清华站∶精华区</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY>
<CENTER>
<H1>BBS水木清华站∶精华区</H1></CENTER>发信人: TJB (老六), 信区: Linux <BR>标 题: GDB (7)
Part One <BR>发信站: BBS 水木调试站 (Wed Jun 3 08:40:14 1998)
<P>发信人: System_<A
href="mailto:Killer@bbs.ustc.edu.cn">Killer@bbs.ustc.edu.cn</A> (大家一起来发呆), 信区:
Linux <BR>标 题: gdb(七) <BR>发信站: 中国科大BBS站 (Wed Apr 8 01:09:09 1998)
<BR>转信站: SwordHouse!linux.ustc.edu.cn!ustcnews!ustcbbs
<P>结束子进程 <BR>========================= <BR>`kill' <BR>
Kill命令结束你程序在gdb下开的子进程 <BR> 这个命令当你想要调试(检查)一个core
dump文件时更有用。gdb在调试过程中 <BR>会忽略所有的core dump。 <BR>
在一些操作系统上,一个程序当你在上面加了断点以后就不能离开gdb独立运行。 <BR>你可以用kill命令来解决这个问题。 <BR>
'kill'命令当你想重新编译和连接你的程序时也很有用。因为有些系统不允许修改
<BR>正在执行的可执行程序。这样当你再一次使用'run'命令时gdb会知道你的程序已经被改
<BR>变了,那么gdb会重新load新的符号。(而且尽量保持你当前的断点设置。 <BR>附加的进程信息
<BR>============================== <BR>
一些操作系统提供了一个设备目录叫做'/proc'的,供检查进程映象。如果gdb被在这 <BR>样的操作系统下运行,你可以使用命令'info
proc'来查询进程的信息。('info proc'命 <BR>令只在支持'procfs'的SVR4系统上有用。 <BR>`info proc'
<BR> 显示进程的概要信息。 <BR>`info proc mappings'
<BR> 报告你进程所能访问的地址范围。 <BR>`info proc times'
<BR> 你进程和子进程的开始时间,用户时间(user CPU time),和系统CPU时间。
<BR>`info proc id' <BR> 报告有关进程id的信息。 <BR>`info proc
status' <BR> 报告你进程的一般状态信息。如果进程停止了。这个报告还包括停止的原因和收到的
<BR>信号。 <BR>`info proc all' <BR> 显示上面这些命令返回的所有信息。
<BR>对多线程程序的调试 <BR>======================================== <BR>
一些操作系统中,一个单独的程序可以有一个以上的线程在运行。线程和进程精确的定? <BR>?
<P>? <BR>? <BR>有自己的寄存器,运行时堆栈或许还会有私有内存。 <BR> gdb提供了以下供调试多线程的进程的功能:
<BR> * 自动通告新线程。 <BR> * 'thread THREADNO',一个用来在线程之间切换的命令。
<BR> * 'info threads',一个用来查询现存线程的命令。 <BR> * 'thread
apply [THREADNO] [ALL] ARGS',一个用来向线程提供命令的命令。 <BR> * 线程有关的断点设置。
<BR> 注意:这些特性不是在所有gdb版本都能使用,归根结底要看操作系统是否支持。 <BR>
如果你的gdb不支持这些命令,会显示出错信息:
<BR> (gdb) info threads
<BR> (gdb) thread 1
<BR> Thread ID 1 not
known. Use the "info threads" command to
<BR> see the IDs of
currently known threads. <BR> gdb的线程级调试功能允许你观察你程序运行中所有的线程,但无论什么时候
<BR>gdb控制,总有一个“当前”线程。调试命令对“当前”进程起作用。 <BR>
一旦gdb发现了你程序中的一个新的线程,它会自动显示有关此线程的系统信 <BR>息。比如: <BR> [New
process 35 thread 27] <BR>不过格式和操作系统有关。 <BR> 为了调试的目的,gdb自己设置线程号。
<BR>`info threads' <BR> 显示进程中所有的线程的概要信息。gdb按顺序显示:
<BR> 1.线程号(gdb设置)
<BR> 2.目标系统的线程标识。
<BR> 3.此线程的当前堆栈。
<BR> 一前面打'*'的线程表示是当前线程。
<BR> 例如: <BR> (gdb) info threads
<BR> 3 process 35 thread 27 0x34e5 in
sigpause () <BR> 2 process 35 thread
23 0x34e5 in sigpause () <BR> * 1 process 35
thread 13 main (argc=1, argv=0x7ffffff8)
<BR> at threadtest.c:68
<P>-- <BR>※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]
<BR>
按任何键继续 ..
<P>-- <BR>※ 来源:·BBS 水木调试站 Leeward.lib.tsinghua.edu.cn·[FROM: 202.200.37.100]
<CENTER>
<H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -