我使用以下命令调试Redwire Econotag r3上运行的程序(基于ARM微控制器)。
xterm -e "openocd -f interface/ftdi/redbee-econotag.cfg -f board /redbee.cfg" &
sleep 1
echo -e "soft_reset_halt\n set *0x80020010 = 0\n" | nc -i 1 localho st 4444 > /dev/null &
arm-none-eabi-gdb hello.elf -x debugOCD.gdb
debugOCD.gdb
包含:
target remote localhost:3333
monitor soft_reset_halt
load hello.elf 0x00400000
b _start
我想使用ConqueGDB(或VIM中的任何其他调试接口)在VIM内部打开调试器。
任何线索?谢谢!!
答案 0 :(得分:1)
经过一番研究,我已经找到了问题的答案。
要在ConqueGDB中使用所需的调试器,必须在加载插件之前在g:ConqueGdb_GdbExe
变量中指定它。
为此,我修改了我的.vimrc
文件,看起来像这样(注意我正在使用Vundle来管理VIM插件):
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
"Specify the debugger to be used
let g:ConqueGdb_GdbExe = 'arm-none-eabi-gdb'
Plugin 'VundleVim/Vundle.vim'
"Load ConqueGDB
Plugin 'vim-scripts/Conque-GDB'
call vundle#end()
filetype plugin indent on
现在,ConqueGDB可用于调试远程板。从VIM命令行执行:
:ConqueGdb -q -x debugOCD.gdb
为了不在此命令中指定两个不同的文件,可以从GDB命令文件加载符号。 OpenOCD执行和目标连接可以以相同的方式处理。这是我debugOCD.gdb
的样子。
#Load the debug symbols
file hello.elf
#Make sure that openOCD is running, otherwise load it
shell if [ ! `pgrep openocd` ]; then xterm -e "openocd -f interface/ftdi/redbee-econotag.cfg -f board/redbee.cfg" & sleep 1; fi
#Connect GDB to OpenOCD and reset the microcontroller
target remote localhost:3333
monitor soft_reset_halt
shell sleep 1
#Upload the image and wait for 1 second
monitor load_image hello.elf
shell sleep 1
#Set a breakpoint at SRAM start address and run from there
b *0x400000
monitor step 0x3ffffc
c
就是这样,为这个命令设置一个别名会很好,所以它更容易记忆,但我想这是微不足道的。 Here you can see a screenshot of VIM with ConqueGDB working.