簡體   English   中英

如何在特定對象的特定方法中設置斷點?

[英]How to set a breakpoint in a specific method of a specific object?

我的C ++項目中存在一個令人討厭的錯誤。 有一堂課

class SomeClass {
    ...
    std::string *someString;
    ...
}

這是一個構造函數

SomeClass(...) {
    ...
    someString = new std::string("");
    ...
}

事實是,此后,我僅使用該特定字符串進行操作,而沒有修改Poiner值。 我一直為該字符串分配不同的字符串,例如

*someString = "whatever";
someString->assign("whatever");
*someString += 'a';

應用程序是多線程的,確實有一個令人討厭的故障。 在某些時候,應用程序崩潰。 調試器顯示變量some​​String具有BAD POINTER。 我不知道這怎么可能

delete someString;

永遠不會被呼喚。

我查看了該字符串指針的所有引用,這是我可以告訴你的:

  1. 永遠不會調用該指針上的delete。
  2. 該指針永遠不會分配給其他任何對象(以后可能會刪除它)。
  3. 該字符串的指針值永遠不會改變(調試器顯示“ Bad Ptr”)。
  4. 其他類變量看起來像它們應該的那樣很好。

因此,我需要找到一種方法來檢查何時在特定對象上調用了析構函數。 實際上是對象數組。

因此,是否有一種方法可以在一組特定對象上對析構函數設置斷點(或其他任何方法)(我正在Visual Studio 2010 Proffessional上工作)?

如果您是多線程的,請考慮為您的字符串成員實現一種鎖定機制...(如果尚未這樣做)。 一個線程極有可能嘗試寫入正在另一個線程中重新分配的指針……或類似的東西。 多一點的代碼將有助於我們在更深入的上下文中理解問題。

暫無
暫無

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

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