BBS水木清华站∶精华区

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

BBS水木清华站∶精华区