程序想要调试需要调试器,
调试有两种:
一种是进程附加调试,
一种是远程调试(需要指定地址和端口), 如果调试器属于这种, 那么调试器充当客户端. 需要调试的程序充当服务器
(说明: 我经常容易搞混, 以为调试器是服务器端, 需要先启动, 然后想要调试的程序连接它就可以调试, 其实这是错误的想法)
有的调试器支持这两种, 如IDA pro, Hopper, adb等
拿PHP调试来说, 调试器是XDebug, 这是一个客户端, 需要指定remote_host和remote_port.
如果想要调试某个PHP文件, 需要指定启动端口, 然后等待XDebug连接.
node调试也是一样,--inspect-brk=22222 获取告诉进程使用调试模式, 此时会挂起,等待调试器连接.
调试器和被调试的程序的关系是客户端和服务器的关系. 调试器要么通过进程附加连接, 要么通过端口连接.
当然能够这样的做条件是被调试的程序要支持挂起.
如通过android studio断点调试apk, 启动的时候都会有一白色的框停留几秒,看英文意思等待调试器连接. apk 可调试的前提是
在androidmanifest.xml文件中加 debuggable=true
总结:
所有的调试器都是客户端, 被调试程序都是服务器端(前提调试是程序可调试), 即使是附加调试,思想也是一样的, 都是需要连接到可调试宿主的程序.