- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式开发基础_调试篇.ppt
主要内容 1.常用的内存调试 memwatch yamd 2.gdb调试 3.kdb调试 memwatch 下载memwatch-2.71.tar.gz tar zxvf memwatch-2.71.tar.gz cd memwatch-2.71 编写源代码(test.c) 增加 #include “memwatch.h” 编译 gcc -DMEMWATCH –DMW_STDIO test.c memwatch.c –o test 运行 ./test 查看memwatch.log文件 Yet Another Malloc Debugger 下载yamd-0.32.tar.gz tar zxvf yamd-0.32.tar.gz cd yamd-0.32 make make install 编写源代码(test.c) 编译 ./yamd-gcc -g –o test test.c 运行 ./test 查看输出日志 GDB 在编译时选择-g选项 gdb的启动 gdb program-name or gdb 启动后执行file program-name or gdb program-name corefile-name 常用命令:file list next step run quit watch break make shell print disable delete continue KDB 准备工作 您将需要下载并应用两个补丁。一个是“公共的”补丁,包含了对通用内核代码的更改,另一个是特定于体系结构的补丁。 例如,在运行 2.6.6内核的 x86 机器上,您会需要 kdb-v4.3-2.6.6-common-1.bz2 和 kdb-v4.3-2.6.6-i386-1.bz2 KDB 安装 bzip2 -d kdb-v4.3-2.6.6-common-1.bz2 bzip2 -d kdb-v4.3-2.6.6-i386-1.bz2 打补丁 patch -p1 kdb-v4.3-2.6.6-common-1 patch -p1 kdb-v4.3-2.6.6-i386-1 KDB 编译内核 “Kernel hacking”部分选择“Built-in Kernel Debugger support”选项。 选择“Compile the kernel with frame pointers”选项(如果有的话)则设置 CONFIG_FRAME_POINTER 标志。这将产生更好的堆栈回溯,因为帧指针寄存器被用作帧指针而不是通用寄存器。您还可以选择“KDB off by default”选项。这将设置 CONFIG_KDB_OFF 标志,并且在缺省情况下将关闭 KDB。 KDB make clean make mrproper make menuconfig make bzImage make modules make modules_install KDB cp System.map /boot/ cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.6 mkinitrd initrd-2.6.6.img 2.6.6 配置grub reboot 激活 KDB 通过在引导期间将 kdb=on (off)标志传递给内核或者通过在挂装了 /proc 之后执行该工作:#echo 1 /proc/sys/kernel/kdb (#echo “0 /proc/sys/kernel/kdb) kdb=early标志将导致在引导过程的初始阶段就把控制权传递给 KDB。如果您需要在引导过程初始阶段进行调试,那么这将有所帮助。 启动: PAUSE键 KDB 命令 内存显示和修改 这一类别中最常用的命令是 md 、 mdr 、 mm 和 mmW 。 md 命令以一个地址/符号和行计数为参数,显示从该地址开始的 line-count 行的内存。如果没有指定 line-count ,那么就使用环境变量所指定的缺省值。如果没有指定地址,那么 md 就从上一次打印的地址继续。地址打印在开头,字符转换打印在结尾。 mdr 命令带有地址/符号以及字节计数,显示从指定的地址开始的 byte-count 字节数的初始内存内容。它本质上和 md 一样,但是它不显示起始地址并且不在结尾显示字符转换。 mdr 命令较少使用。 mm 命令修改内存内容。它以地址/符号和新内容作为参数,用 new-contents 替换地址处的内容。 mmW 命令更改从地址开始的 W 个字节。请注意, mm 更改一个机器字。 KDB 命令 寄存器显示和修改 这
原创力文档


文档评论(0)