如何在特定对象的特定方法中设置断点
How to set a breakpoint in a specific method of a specific object?
我的c++项目中有一个严重的错误。有一个类
class SomeClass {
...
std::string *someString;
...
}
这是一个构造函数
SomeClass(...) {
...
someString = new std::string("");
...
}
问题是,之后我只操作那个特定的字符串,不修改指针的值。我一直给这个字符串赋值不同的字符串,比如
*someString = "whatever";
someString->assign("whatever");
*someString += 'a';
应用程序是多线程的,有一个非常讨厌的小故障。在某些时候,应用程序会崩溃。调试器显示变量someString有一个坏指针。我不知道这是怎么可能的
delete someString;
永远不会被调用。
我已经查看了那个字符串指针的所有引用,我可以告诉你的是:
- 该指针永远不会被赋值给任何其他对象(以后可能会被删除)。
- 该字符串的指针值从未以任何方式改变(调试器显示'Bad Ptr')。
- 其他类变量看起来很好,就像他们应该的那样。
那么,是否有一种方法可以在特定对象集的析构函数(或任何其他方法)上设置断点(我正在visual studio 2010专业版上工作)?
如果你是多线程的,考虑实现一个锁定机制…(如果您还没有这样做的话)为您的string成员。很有可能一个线程试图写一个指针,而这个指针正在另一个线程中被重新分配…或者类似的东西。更多的代码将帮助我们在更深的上下文中理解问题。
相关文章:
- 在 vscode 中运行时无法暂停或设置断点
- 如何在进入动态打开的共享库时设置断点?
- 代码在 msvcrt .dll函数上设置断点失败
- 如何在 gdb 中的所有构造函数上同时为 C++ 对象设置断点?
- 使用 gdb 在模块中的特定行设置断点
- 无法设置断点以查看错误C 有序列表
- 使用Visual Studio Code和CMake调试OpenGL(使用GLEW&GLFW),无法设置断点
- 如何修复此错误:在malloc_error_break中设置断点以进行调试
- 在malloc_error_break中设置断点以在C++中调试
- 是否使用通配符设置断点
- 在Visual Studio中的dll中的函数处设置断点
- 正在设置断点,但未命中断点
- 如何在gdb中为函数的所有调用设置断点
- LLDB:通过控制台为malloc_error_break设置断点
- 如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点
- 当某个条件为真时,如何在 Eclipse 中以编程方式设置C++断点
- 如何使用 windbg 在不属于任何类的函数声明上设置断点
- 如何在捕获块中设置断点?(C++)
- 如何在 Visual Studio 中的 DLL 上设置断点
- 在名称包含 WinDBG 中的空格的重载函数处设置断点