关于调试

程序想要调试需要调试器,  

调试有两种:

一种是进程附加调试, 

一种是远程调试(需要指定地址和端口),   如果调试器属于这种, 那么调试器充当客户端.  需要调试的程序充当服务器

(说明: 我经常容易搞混, 以为调试器是服务器端, 需要先启动, 然后想要调试的程序连接它就可以调试,  其实这是错误的想法)

有的调试器支持这两种,  如IDA pro, Hopper, adb等

拿PHP调试来说,  调试器是XDebug,  这是一个客户端,  需要指定remote_host和remote_port.

如果想要调试某个PHP文件, 需要指定启动端口,  然后等待XDebug连接.

node调试也是一样,--inspect-brk=22222  获取告诉进程使用调试模式, 此时会挂起,等待调试器连接.

调试器和被调试的程序的关系是客户端和服务器的关系.     调试器要么通过进程附加连接, 要么通过端口连接.

当然能够这样的做条件是被调试的程序要支持挂起.      

如通过android studio断点调试apk, 启动的时候都会有一白色的框停留几秒,看英文意思等待调试器连接.   apk 可调试的前提是

在androidmanifest.xml文件中加 debuggable=true

总结:

所有的调试器都是客户端,  被调试程序都是服务器端(前提调试是程序可调试),   即使是附加调试,思想也是一样的, 都是需要连接到可调试宿主的程序.

原文地址:https://www.cnblogs.com/dzqdzq/p/11612788.html