origin: http://zhidao.baidu.com/link?url=TGqu9ntKm3JAy_lQuzsvAZcw3_WdOdaX4LmsNPB_Sc2XZcXhgEQ3SSzRyYMNpnAtu8gGOEs9Y3hPnX82me6kg1lDmnAbnHVjW1QQMPAKpTm
PC端安装的jlink gdbserver,segger官方手册里的框图如下:
但是很多博客都有这样的描述:
“在pc机上要运行gdb,在开发板上运行gdbserver。gdb调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作!由此我们知道,pc机上要运行gdb,开发板上要运行gdbserver!”
按框图来说,gdbserver不是在PC端的吗,怎么是在开发板了,调试的时候也没有将gdbserver装入开发板呀?求指点。
2014-08-25 14:28
最佳答案
1、ARM硬件内核嵌入了能够响应J-Link命令的调试模块(用户无法修改,也不需要额外烧录程序); 2、在调试过程是,由ARM内嵌的调试模块来执行和响应Linux下的gdb调试软件(工具),所以有些人把它称为gdbserver; 3、而linux中的软件很多都是服务器+用户的模式(不明白的可以直接忽略这个表述),Linux中的gdb在自己的软件架构有一个虚拟的服务器(就是上图中的GDB Server),其与博客上的gdbserver不是一个东东; 4、我个人也不认同有些博客中的那种说法,但也不能说他们是错的,因为从宏观的角度讲,ARM硬件内核嵌入调试模块正是为gdb服务的,因此称之为gdbserver也有些道理,只不过这样一来,给造成不必要的误解! ******希望我的解释对你有帮助!
追问
第1条可以理解。
第2条的意识是ARM内嵌调试模块即为gdbserver。但是我说的gdbserver是随jlink一起安装的呀,如下:
第3条说的是linux,我用的是windows xp。
第4条,按照jlink官方的说法,貌似gdb不能直接调试ARM内核,需要gdbserver的解析,以gdbserver为中间体才可以与ARM内核通信。