program-gdb-c.html
来自「学习linux的工具书」· HTML 代码 · 共 64 行
HTML
64 行
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
<title>BBS水木清华站∶精华区</title>
</head>
<body>
<center>
<h1>
BBS水木清华站∶精华区</h1></center>
发信人: TJB (老六), 信区: Linux
<br>标 题: GDB (7) Part Two
<br>发信站: BBS 水木调试站 (Wed Jun 3 08:41:18 1998)
<p>发信人: System_<a href="mailto:Killer@bbs.ustc.edu.cn">Killer@bbs.ustc.edu.cn</a>
(大家一起来发呆), 信区: Linux
<br>标 题: gdb(七)
<br>发信站: 中国科大BBS站 (Fri Apr 10 00:19:22 1998)
<br>转信站: SwordHouse!linux.ustc.edu.cn!ustcnews!ustcbbs
<p>`thread THREADNO'
<br> 把线程号为THREADNO的线程设为当前线程。命令行参数THREADNO是gdb内定的
<br>线程号。你可以用'info threads'命令来查看gdb内设置的线程号。gdb显示该线程
<br>的系统定义的标识号和线程对应的堆栈。比如:
<p> (gdb) thread
2
<br> [Switching to
process 35 thread 23]
<br> 0x34e5 in sigpause
()
<br> "Switching后的内容取决于你的操作系统对线程标识的定义。
<p>`thread apply [THREADNO] [ALL] ARGS'
<br> 此命令让你对一个以上的线程发出相同的命令"ARGS",[THREADNO]的含义同上。
<br>如果你要向你进程中的所有的线程发出命令使用[ALL]选项。
<br> 无论gdb何时中断了你的程序(因为一个断点或是一个信号),它自动选择信号或
<br>断点发生的线程为当前线程。gdb将用一个格式为'[Switching to SYSTAG]'的消息
<br>来向你报告。
<br> *参见:运行和停止多线程程序。
<br> *参见:设置观察点
<p>调试多进程的程序
<br>==========================================
<br> gdb对调试使用'fork'系统调用产生新进程的程序没有很多支持。当一个程序开始
<br>一个新进程时,gdb将继续对父进程进行调试,子进程将不受影响的运行。如果你在子
<br>进程可能会执行到的地方设了断点,那么子进程将收到'SIGTRAP'信号,如果子进程没
<br>有对这个信号进行处理的话那么缺省的处理就是使子进程终止。
<br> 然而,如果你要一定要调试子进程的话,这儿有一个不是很麻烦的折衷的办法。在
<br>子进程被运行起来的开头几句语句前加上一个'sleep'命令。这在调试过程中并不会引
<br>起程序中很大的麻烦(不过你要自己注意例外的情况幺:-))。然后再使用'ps'命令列出
<br>新开的子进程号,最后使用'attach'命令。这样就没有问题了。
<br> 关于这一段,本人觉得实际使用上并不全是这样。我在调试程中就试过,好象不一定
<br>能起作用,要看gdb的版本和你所使用的操作系统了。
<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 + =
减小字号Ctrl + -
显示快捷键?