搜索
bottom↓
回复: 17

avr-gdb调试入门教程

[复制链接]

出0入0汤圆

发表于 2008-3-26 13:42:23 | 显示全部楼层 |阅读模式
也许我确实是个另类,因为对单片机发烧的同时还对Linux发烧,放着溫兜死下的avr studio不用,却喜欢GNU工具链。幸运的是gnu工具确实非常强大。下面就同大家一起看看如何用avr-gdb进行调试。

step1:   我要调试的程序——网站上的新手入门的例子
1        #include <avr/io.h>
2        #include <util/delay.h>
3       
4        int main(void)
5        {
6                unsigned char i = 0xff;
7               
8                PORTA = 0xff;
9                DDRA = 0xff;
10                while(1){
11                        PORTA = i;
12                        i = ~i;
13                        _delay_us(400);
14                }
15        }

step2: Makefile ——  直接使用WinAVR中附带的MFile生成,注意修改以下与调试有关的部分(我不知道如何论坛里如何修改字体,加粗变色就弄不好了):

#---------------- Debugging Options ----------------

# For simulavr only - target MCU frequency.
DEBUG_MFREQ = $(F_CPU)

# Set the DEBUG_UI to either gdb or insight.
DEBUG_UI = gdb                # 注意这里,如果你喜欢consol程序就用gdb
#DEBUG_UI = insight           # 如果喜欢 GUI界面就用 insight

# Set the debugging back-end to either avarice, simulavr.
#DEBUG_BACKEND = avarice     # 如果你有JTAG 等工具可用avarice,我没有,所以用simulabr模拟调试。  PS:好像支持“龙”哦,等会儿试下。
DEBUG_BACKEND = simulavr

# GDB Init Filename.
GDBINIT_FILE = __avr_gdbinit

# When using avarice settings for the JTAG
JTAG_DEV = /dev/com1

# Debugging port used to communicate between GDB / avarice / simulavr.
DEBUG_PORT = 4242

# Debugging host used to communicate between GDB / avarice / simulavr, normally
#     just set to localhost unless doing some sort of crazy debugging when
#     avarice is running on a different computer.
DEBUG_HOST = localhost

step3: make debug
这一步开始,你可以先构建你的程序。在输入make debug开始调试。
图1: make debug
1
图2:simulavr  开源的avr模拟器,这个软件监听tcp 4242端口,执行avr-gdb发送过来的调试指令
2
图3:avr-gdb启动后的界面,他是我们调试的界面
3

step4: 好了现在我们已经进入到了调试环境。开始调试
       命令1:  list  ,查看调试的源程序,执行效果如图

1
       命令2:  break 11, 在第11行设置断点,效果如图

2

       命令3: continue, 执行,在断点处停下
       命令4: print i, 查看变量i的值,效果如图:
1
       命令5: step   , 单步执行程序,敲回车重复上次输入的命令
3
       命令6:print *(unsigned char*)0x3b 查看PORTA的值
1


好吧,到此为止吧,到这里我想你应该会使用avr-gdb进行一些简单的调试了,当然avr-gdb的功能远远不止于此,但是贴图太累了,你自己摸索去吧。我要去试下用我的“龙”+avr-gdb进行调试了。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入42汤圆

发表于 2008-3-26 13:50:31 | 显示全部楼层
强顶楼主,我也在玩Linux,也想在Linux下开发.

出0入0汤圆

发表于 2008-3-26 16:13:54 | 显示全部楼层
太高深了,是不是高手都不喜欢用图形界面

出0入0汤圆

发表于 2008-3-26 16:19:02 | 显示全部楼层
打个记号先,现在还不懂,以后会懂的!

出0入0汤圆

发表于 2008-3-26 16:30:58 | 显示全部楼层
winavr提供了窗口化的gdb调试用前端软件AVR Insight。

出0入0汤圆

发表于 2008-3-26 16:40:32 | 显示全部楼层
以后再说
现在是菜菜鸟

出0入0汤圆

 楼主| 发表于 2008-3-26 18:11:10 | 显示全部楼层
回4楼yyccaa
是的,可以用AVR Insight,只需要在Makefile中把DEBUT_UI设置为insight如下
DEBUG_UI = insight
就可以直接make debug使用insight调试了。
我闲贴图太麻烦就没有用这个。哈哈

出0入0汤圆

发表于 2008-3-26 19:11:19 | 显示全部楼层
太麻烦了!
1
2
3

出0入0汤圆

发表于 2008-3-26 19:15:16 | 显示全部楼层
很好,很强大
谢谢!

出0入0汤圆

发表于 2008-3-26 19:23:13 | 显示全部楼层
不错 GDB 再加一个GDBserve 那就爽了

出0入0汤圆

发表于 2008-3-26 19:24:49 | 显示全部楼层
lz 能上传个 makefile 上来吗?

我 make debug 时老是出错。

出0入0汤圆

发表于 2008-3-26 20:41:00 | 显示全部楼层
太恐怖了!!!

出0入0汤圆

 楼主| 发表于 2008-3-26 20:51:18 | 显示全部楼层
回10楼CYHourdev,我直接使用MFile生成的makefile
点击此处下载ourdev_239498.txt(文件大小:17K)
下载后去掉后缀,改名Makefile

出0入0汤圆

发表于 2011-12-7 14:42:03 | 显示全部楼层
同样对GNU发烧,顶楼主

出0入0汤圆

发表于 2012-1-25 17:16:32 | 显示全部楼层
顶,我狂顶!!!今天下午还在纠结GDB的手册,看了楼主的帖,茅塞顿开了!!!

出0入0汤圆

发表于 2012-1-28 15:54:54 | 显示全部楼层
7楼的帖子也对我很有帮助。因为楼主是在win下运行,而该makefile的版本中有一个 winshell=cmd 项,对linux是不适用的。在linux下,就是用 simulavr+avr-gdb 即可。顶,我继续顶!!!

出0入0汤圆

发表于 2012-2-19 19:47:51 | 显示全部楼层
菜鸟学习学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 16:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表