请问,打断点哪里是怎么判断要加在哪里。例如您上次上课讲的 是加在 exec_simple_query 上,这个是怎么定的?
设置断点的原理是当程序运行到设置断点的地方会停下来,便于我们继续跟踪、查看相关变量装填、调试。在哪里设置断点要根据情况而定,一些经验如下:
保证设置断点的函数会被调用到,函数没有调用到就不会停下来,那设置了断点也没意义了。
尽量接近你的目的函数,如果你通过查看日志,已经知道了是某个函数出错了,可以直接在该函数设置断点,帮助跟踪定位问题。
尽量不设置在被大量调用的函数上,否则会不停的停到该断点上,会干扰调试。有时出问题时,在日志中可以看到问题函数,如果该函数会被调用到很多次,可以通过设置条件断点减少干扰。如 b src/main.cpp:127 if cnt==10
课上举例使用的exec_simple_query函数断点,因为一般的SQL都会进入,主要为了更好的给大家介绍SQL的执行流程,但一般情况问题发生的调用都比较深,最好先确定大致的问题函数再设置断点,效率会更高。
另外就是一些特殊情况,如启动流程、backend进程启动的情况、各种辅助进程的问题,需要找到对应程序的入口和对应的进程ID再进行调试。
此答案来自钉钉群“PG|POLARDB技术进阶”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。