0

QNX neutrino 中的 THREAD 数据类型是什么?如何使用线程的 THREAD* 值访问线程堆栈的内容,就像使用 gdb 命令工具调试堆栈帧一样?

4

1 回答 1

0

您可以通过 /proc 文件系统在您自己的或(如果您是 root)另一个进程中检索特定线程的寄存器值。

首先,您使用 DCMD_PROC_CURTHREAD devctl() 选择要检索以下寄存器的线程:

http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_prog%2Fprocess.html&cp=13_7_3_4_7&anchor=DCMD_PROC_CURTHREAD

之后,您使用 DCMD_PROC_GETREG 检索寄存器的值,包括堆栈指针。

如果您是从同一进程的另一个线程执行此操作,那么您可以使用 SP 的值,因为您在同一地址空间中。

如果您是从另一个进程执行此操作,那么您需要通过 /proc/PID/ 读取()地址空间,如下所述: http ://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp ?topic=%2Fcom.qnx.doc.neutrino_prog%2Fprocess.html&cp=13_7_3_4_1&anchor=Address_space

于 2013-12-03T07:19:21.183 回答