想到一个有趣的问题,为什么 debug 模式可以进断点而 run 模式不行?
資深大佬 : wqgogogo 2
因为当在 debug 模式下一个断点时,IDE 将断点处程序的二进制替换为了 0xCC,即 INT 3 指令,当程序执行到 INT 3 时,再替换回原指令执行,而 run 模式并未做这个事。
大佬有話說 (38)
如果有源文件的话,IDE 支持在程序运行之后再把调试器挂载到指定进程。
而普通模式运行的时候是很少与源文件相关的信息,不方便你对着源码去调试。
另外执行方式也不同. 参考 ptrace.
唯一想到的可能就是:非 debug 模式下不好去定位到源文件,也不好去处理变量名(也许都丢失了),然后调试器的开发者懒得去支持非 debug 模式调试
debug 过程生产的代码未必到了汇编或者机器码,而只是编译器自己解析的逻辑代码,当然可以 debug 。