原标题:《C ++26: The New Debugging Header》 评分: 26 | 作者: jandeboevrie 💭 连断点停哪都靠猜,这调试标准给谁用? 🎯 讨论背景 讨论围绕拟进入 C ++26 的调试头文件及其 breakpoint()、is_debugger_present() 等接口展开;其目标是在程序中以标准方式触发调试器断点,并尽量停在用户调用处。提案示例期待 x86 上把 breakpoint() 优化成单条 INT3,但 x86 异常保存地址、GDB(GNU Debugger,常用的 Unix 调试器)对嵌入式断点的处理,以及 Debug mode 下编译器是否内联,都会改变实际定位效果。争论建立在一个关键区别上:调试器自行植入的断点位置已知,而程序编译产出的内嵌 INT3 还必须与 single stepping 等其他 SIGTRAP 来源区分。文章本身又因被怀疑由 LLM 生成而受到审稿可靠性质疑,使实现细节的准确性成为焦点。 📌 讨论焦点 x86 INT3 会令调试器定位错行 评论认为提案若把 breakpoint() 压缩为单条 x86