繁体   English   中英

使用gdb设置多线程应用程序的观察点

[英]Setting watchpoint for multithreaded applications with gdb

gdb手册说如下。

警告:在多线程程序中,软件观察点的用处有限。 如果gdb创建了一个软件观察点,它只能在单个线程中观察表达式的值。 如果您确信表达式只能由于当前线程的活动而发生变化(如果您也确信没有其他线程可以变为当前线程),那么您可以像往常一样使用软件观察点。 但是,当非当前线程的活动更改表达式时,gdb可能不会注意到。 (相比之下,硬件观察点在所有线程中观察表达。)

那么,如何使用gdb将watchpoint与多个线程一起使用,以便gdb可以看到从任何线程更改为监视变量?

通常,软件观察点非常昂贵。 如果您正在观看地址定义良好的标量数据,您可以使用硬件观察点

  p &myvar
  $1 = (int*) 0x1234556
  watch *(int*) 0x1234556

这仅适用于简单的标量数据(单指针,单整数,单字节......)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM