簡體   English   中英

gdb:在c ++中的類函數上創建一個斷點

[英]gdb: make a breakpoint on a class function in c++

假設以下課程:

class a {
   public:
      int getA(int a){
     return 5;
      }
      int getA(int a, int b){
     return 6;
      }
};

int main(){
   a cA;
   std::cout << cA.getA(5) << std::endl;

   return 0;
}

在gdb中,我可以使用以下命令在getA函數上設置breakpoint

b a::getA

但這只在第一個函數上設置了一個b ,如何在第二個函數上設置b (當然不使用行號)

main()添加一行:

std::cout << cA.getA(2,3) << std::endl;

現在,重復原始實驗。 您的結果會有所不同,現在:

(gdb) b a::getA
Breakpoint 1 at 0x40089d: a::getA. (2 locations)

“2個位置”是gdb告訴你它現在為兩個重載函數注入了斷點。 單步執行代碼將驗證這一點。

如果符號解析為乘法重載函數,則b命令會在每個函數中設置斷點。

但是因為第二個重載函數是一個內聯函數,並且它從未在原始代碼中調用過,所以gcc甚至沒有編譯它,並且gdb沒有設置斷點。

ba::getA(int,int)應該可以解決問題。 即使是已經工作的那個也應該可以用ba::getA(int)替換。

自己嘗試一下這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM