多线程编程指南

使用 dbx

使用 dbx 实用程序,可以调试和执行使用 C++、ANSI C 和 FORTRAN 编写的源代码程序。dbx 与调试器接受同样的命令,但使用标准的终端 (TTY) 接口。dbx 和调试器都支持调试多线程程序。有关如何启动 dbx 的说明,请参见 dbx(1) 手册页。有关 dbx 的概述,请参见《Debugging a Program With dbx》。调试器功能在 dbx 的调试器 GUI 的联机帮助中介绍。

表 7–2 中列出的所有 dbx 选项均可支持多线程应用程序。

表 7–2 MT 程序的 dbx 选项

选项 

操作 

cont at line [-sig signo id]

在包含信号 signoline 中继续执行操作。id(如果存在)指定哪个线程或 LWP 继续操作。缺省值为 all

lwp

显示当前的 LWP。切换到给定 LWP [lwpid]。  

lwps

列出当前进程中所有的 LWP。  

next ... tid

单步执行给定线程。跳过函数调用时,所有的 LWP 都会在该函数调用期间隐式恢复。不能单步执行非活动线程。  

next ... lid

单步执行给定 LWP。跳过函数时不会隐式恢复所有 LWP。所含的给定线程处于活动状态的 LWP。跳过函数时不会隐式恢复所有 LWP。  

step... tid

单步执行给定线程。跳过函数调用时,所有的 LWP 都会在该函数调用期间隐式恢复。不能单步执行非活动线程。  

step... lid

单步执行给定 LWP。跳过函数时不会隐式恢复所有 LWP。  

stepi... lid

给定的 LWP。  

stepi... tid

所含的给定线程处于活动状态的 LWP。  

thread

显示当前线程。切换到线程 tid。在下面所有的变体中,可选的 tid 表示当前线程。

thread -info [ tid ]

列显有关给定线程的所有已知信息。  

thread -blocks [ tid ]

列显阻塞其他线程的给定线程持有的所有锁定。  

thread -suspend [ tid ]

使给定线程进入暂停状态。  

thread -resume [ tid ]

取消暂停给定线程。  

thread -hide [ tid ]

隐藏给定线程或当前线程。该线程不会出现在通用的 threads 列表中。

thread -unhide [ tid ]

取消隐藏给定线程或当前线程。

thread -unhide all

取消隐藏所有线程。

threads

列显所有已知线程的列表。  

threads -all

列显通常不会列显的线程(僵线程)。  

threads -mode all|filter

控制在缺省情况下,threads 是列显所有线程,还是过滤线程。

threads -mode auto|manual

实现线程列表的自动更新。  

threads -mode

回显当前模式。线程或 LWP ID 可以按照以前的任何形式来追溯指定实体。