最近,我遇到了
std::sort
函数崩溃的bug。经过调试,我发现std::sort
需要提供的比较函数来满足严格的弱排序。在不熟悉内部实现的情况下,如何使用GDB来定位和调试这类问题呢?我们是否需要了解高级 GDB 技术,例如查看汇编命令、寄存器或内存?
您需要习惯黑匣子功能,如果使用不当,就会崩溃。您需要阅读您使用的函数的文档:en.cppreference.com/w/cpp/algorithm/sort 和 en.cppreference.com/w/cpp/named_req/Compare 并密切关注它们
第一个链接第二个,其中明确指出:
应用于满足 Compare 类型的对象的函数调用操作的返回值,当上下文转换为 bool 时,如果调用的第一个参数出现在由该类型引起的严格弱排序关系中的第二个参数之前,则返回 true ,并且否则为假。