我正在处理我的应用程序中的一些崩溃,并想知道是否有人可以提供帮助。
GDB:
http://pastebin.com/tW6HzY2Y 是什么导致这个?我正在使用Ubuntu 10.04.3。
编辑: 看起来像问题在这里:
bool ChatChannel::removeUser(Player* player)
{
UsersMap::iterator it = m_users.find(player->getID());
if(it == m_users.end())
return false;
m_users.erase(it);
return true;
}
这很奇怪,这部分从来没有任何问题。我不知道如何重现错误。
答案 0 :(得分:1)
其他建议并没有太大的意义。您链接的堆栈跟踪几乎没有信息。但是,有一点可以说是安全的:基于this=0x38
,您试图在不是树的对象中找到某些东西。我个人的猜测是,包含您的std::map<unsigned int, Player>
的数据结构在其他几个成员(总大小为56字节)之后有这个映射但您尝试通过NULL
指针访问此数据结构。也就是说,尽管std::_Rb_tree
中发生了分段错误,但错误根本不在std::map
实现中。
答案 1 :(得分:0)
在valgrind下运行您的程序。它几乎肯定会在实际崩溃之前吐出一些错误,这可能更接近错误的来源(而不是附带损害)。