Just thought I'd share my debug experience with the newt tool using gdb.

First, if you are a OS developer, you are probably not messing with newt so 
there isn't much use for this tutorial; you may want to ignore this. But if you 
are changing the newt or newtmgr code, this may be helpful.

You must build your go code with the following options... to tell go to add 
debug symbols.


go build -gcflags "-N -l"


Then you can run the debugger on the code. Do this from your mynewt project 
folder:

$gdb newt

You should see this in the gdb startup:


Reading symbols from /Users/paulfdietrich/Development/Go/bin/newt...done.

Loading Go Runtime support.


Once this happens, GDB automatically uses the goenv to set source paths etc so 
this should not be a problem.


You run the program just like you would with gdb in other languages


(gdb) run -l DEBUG -v build app


Settings breakpoints is a bit trickier than with C since the namespaces are 
required.

To break in main, use

(gdb)b main.main

You must use the fully qualified namespace and function. So for apache my 
newt's newt tool, use something like this

(gdb)b mynewt.apache.org/newt/newt/builder.NewTargetBuilder

If you have a function with a receiver, you can just add it to the name like 
this with more dots in the namespace

(gdb)b mynewt.apache.org/newt/newt/builder.(*TargetBuilder).Build


Happy Debugging!!!

NOTE: I almost got all of this to work within LiteIDE except that I could not 
tell it how to run the program from project directory of my mynewt project, so 
I could not get it to find the project.yml files.  Anyone know how to set that 
stuff in LiteIDE.

Paul




Reply via email to