Revision: 1583 Author: teawater Date: Thu May 30 01:23:36 2013 Log: Update doc http://code.google.com/p/kgtp/source/detail?r=1583 Modified: /wiki/HOWTO.wiki /wiki/HOWTOCN.wiki ======================================= --- /wiki/HOWTO.wiki Thu May 30 01:05:36 2013 +++ /wiki/HOWTO.wiki Thu May 30 01:23:36 2013 @@ -306,7 +306,8 @@So if your GDB is older than 7.6 please go to [https://code.google.com/p/gdbt/] to get howto install GDB for KGTP. It supplies sources of UBUBTU, CentOS, Fedora, Mandriva, RHEL, SLE, openSUSE. Also have static binary for others.<br> If you have issue about GDB please get help according to [HOWTO#Report_issues_about_KGTP].
-= Use GDB connect to KGTP = += How to let GDB connect to KGTP = +To use KGTP function need let GDB connect to KGTP first. == Normal Linux == === Insmod the KGTP module === If you have installed KGTP in your system, you can: @@ -434,7 +435,7 @@ }}} Then this script will auto load the Linux kernel module's symbols to GDB. -= Howto use GDB control KGTP trace Linux kernel = += Howto use GDB control KGTP trace and debug Linux kernel = == Direct access the current value in normal mode ==After GDB connect to KGTP, if it doesn't select any a entry of trace frame bufffer with GDB command "tfind", GDB in the *normal mode*. Then you can direct access the current value of memory (Linux kernel or the user space program) and the trace state variables without stop anything.<br> If you have selected a trace frame entry, use GDB command "tfind -1" to return to normal mode. Please goto [#Use_tfind_select_the_entry_inside_the_trace_frame_info] get more info about GDB command "tfind".
======================================= --- /wiki/HOWTOCN.wiki Wed May 29 23:03:13 2013 +++ /wiki/HOWTOCN.wiki Thu May 30 01:23:36 2013 @@ -304,10 +304,11 @@所以如果你的GDB小于7.6请到 [https://code.google.com/p/gdbt/] 去安装可以和 KGTP一起使用的GDB。这里提供UBUBTU, CentOS, Fedora, Mandriva, RHEL, SLE, openSUSE源。其他系统还可以下载静态编译版本。<br> 如果你有GDB的问题,请根据这里的信息 [http://code.google.com/p/kgtp/wiki/HOWTOCN#需要帮助或者汇报问题]取得帮助。
-= 如何使用 = -== 执行 == -=== 普通Linux === -==== 安装KGTP模块 ==== + += 如何让GDB连接KGTP = +要使用KGTP的功能需要先让GDB连接到KGTP上。 +== 普通Linux == +=== 安装KGTP模块 === 如果你已经安装了KGTP在你的系统中,你可以: {{{ sudo modprobe gtp @@ -317,7 +318,7 @@ cd kgtp/ sudo insmod gtp.ko }}} -==== 处理找不到"/sys/kernel/debug/gtp"的问题 ==== +=== 处理找不到"/sys/kernel/debug/gtp"的问题 ===如果你有这个问题,请先确定你的内核config打开了"Debug Filesystem"。 [http://code.google.com/p/kgtp/wiki/HOWTOCN#如果你的系统内核是自己编译的 ]<br>
如果它以及被打开了,请用下面命令mount sysfs。 @@ -332,9 +333,9 @@ mount -t debugfs none /sys/kernel/debug/ }}} 然后你就找到"/sys/kernel/debug/gtp"。 -==== 让GDB连接到KGTP ==== +=== 让GDB连接到KGTP ===请 *注意* 让GDB打开正确的vmlinux文件非常重要。请到 [http://code.google.com/p/kgtp/wiki/HOWTOCN#确定Linux内核调试镜像是正确的] 去看下如何做。
-===== GDB在本地主机上 ===== +==== GDB在本地主机上 ==== {{{ sudo gdb ./vmlinux (gdb) target remote /sys/kernel/debug/gtp @@ -342,7 +343,7 @@ 0x0000000000000000 in ?? () }}} 然后你就可以用GDB命令调试和跟踪Linux内核了。 -===== 如果GDB在远程主机上 ===== +==== 如果GDB在远程主机上 ==== 用nc把KGTP接口映射到端口1024上。 {{{ sudo su @@ -357,8 +358,8 @@ }}} 然后你就可以用GDB命令调试和跟踪Linux内核了。 -=== Android === -==== 安装KGTP模块 === +== Android == +=== 安装KGTP模块 === *第一步* 确定ADB已经连接到Android上。<br> *第二步* 拷贝KGTP模块到Android上。 {{{ @@ -369,7 +370,7 @@ {{{ adb shell insmod /gtp.ko }}} -==== 处理找不到"/sys/kernel/debug/gtp"的问题 ==== +=== 处理找不到"/sys/kernel/debug/gtp"的问题 ===如果你有这个问题,请先确定你的内核config打开了"Debug Filesystem"。 [http://code.google.com/p/kgtp/wiki/HOWTOCN#如果你的系统内核是自己编译的 ]<br>
如果它以及被打开了,请用下面命令mount sysfs。 @@ -384,7 +385,7 @@ mount -t debugfs none /sys/kernel/debug/ }}} 然后你就找到"/sys/kernel/debug/gtp"。 -===== GDB连接KGTP ===== +=== GDB连接KGTP === 用nc将KGTP接口映射到1024端口上。 {{{ adb forward tcp:1234 tcp:1234 @@ -399,11 +400,11 @@ }}} 然后你就可以用GDB命令调试和跟踪Linux内核了。 -== 增加模块的符号信息到GDB == += 增加模块的符号信息到GDB = 有时你需要添加一个Linux内核模块的符号信息到GDB好调试其。<br>手动增加符号信息不太容易,所以KGTP包里包含了GDB Python脚本"getmod.py"和程 序"getmod"可以帮到你。
-=== 如何使用getmod === +== 如何使用getmod == "getmod" 是用C写的所以你可以把它用在任何地方即使是一个嵌入式环境。<br> 例如: {{{ @@ -430,13 +431,14 @@ sudo ./getmod -r /home/teawater/kernel/b26 >~/tmp/mi }}} -=== 如何使用getmod.py === +== 如何使用getmod.py == 在使用getmod.py前连接到KGTP。 {{{ (gdb) source ~/kgtp/getmod.py }}} 于是这个脚本将自动装载Linux内核模块到GDB中。 += 如何使用GDB控制KGTP跟踪和调试Linux内核 = == 在普通模式直接访问当前值 ==在GDB连到KGTP上以后,如果没有用GDB命令"tfind"选择一条trace帧缓存里面的条 目,GDB就处于 *普通模式*。于是你可以直接访问内存(Linux内核或者用户程序)的值 和trace状态变量的值。<br> 如果你选择了一个trace帧条目,可以用GDB命令"tfind -1"返回到普通模式。请到 [http://code.google.com/p/kgtp/wiki/HOWTOCN#用tfind选择trace帧缓存里面的条目 ]取得GDB命令"tfind"的更多信息。