繁体   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