簡體   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