-
lupidan
- Posts: 7
- Joined: Wed Jun 24, 2009 10:44 am
Post
by lupidan » Fri Jul 17, 2009 9:45 am
Well, sometimes in my program when I hit Home to return to the Homewbrew Channel, a exception take place.
My knowledge in Wii Programming is not very extensive, all I can read from there is that a DSI exception ocurred, and i have the stack copy, wich I think it could help me debbugging.
¿What's a DSI exception?¿How could I translate de Stack Dump into lines of my code?
Thanks in advance

-
Samson
- Posts: 35
- Joined: Mon May 19, 2008 8:05 am
Post
by Samson » Fri Jul 17, 2009 8:23 pm
lupidan wrote:¿What's a DSI exception?
An illegal memory access, most likely an invalid or NULL pointer.
¿How could I translate de Stack Dump into lines of my code?
Code: Select all
Usage: ./powerpc-gekko-addr2line [option(s)] [addr(s)]
Convert addresses into line number/file name pairs.
If no addresses are specified on the command line, they will be read from stdin
The options are:
@<file> Read options from <file>
-b --target=<bfdname> Set the binary file format
-e --exe=<executable> Set the input file name (default is a.out)
-i --inlines Unwind inlined functions
-j --section=<name> Read section-relative offsets instead of addresses
-s --basenames Strip directory names
-f --functions Show function names
-C --demangle[=style] Demangle function names
-h --help Display this information
-v --version Display the program's version
./powerpc-gekko-addr2line: supported targets: elf32-powerpc aixcoff-rs6000 elf32-powerpcle ppcboot elf32-little elf32-big srec symbolsrec tekhex binary ihex
Report bugs to <http://www.sourceware.org/bugzilla/>
Make sure the code is built and linked with debug information, i.e -g .
-
lupidan
- Posts: 7
- Joined: Wed Jun 24, 2009 10:44 am
Post
by lupidan » Sat Jul 18, 2009 6:32 pm
Thanks a lot Samson
Well, i went to my Makefile to check if the -g option is enabled
Code: Select all
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
And wehenever I try to use the debugger...
Code: Select all
powerpc-gekko-addr2line -e Game.elf
0x813a373c
All I get is this:
I guess the debugging information is not present. ¿Should I change something in my code?
UPDATE:
I tried removing the -O2 flag from de CFLAGS, and now it doesn't seem to crash, when It was present, the program randomly crashed when I clicked the home button to return to Homebrew Channel. ¿Possible bug?
-
Samson
- Posts: 35
- Joined: Mon May 19, 2008 8:05 am
Post
by Samson » Sat Jul 18, 2009 7:30 pm
Do you have -g in the linker flags, when you create the elf, as well?
BTW: For a test find the address of main(), and see if you can resolve it from the address. And there is a chance that the crash is outside your program.
Have a look at the map file, or the section information printed by readelf, which memory addresses your program actually covers.
-
lupidan
- Posts: 7
- Joined: Wed Jun 24, 2009 10:44 am
Post
by lupidan » Sun Jul 19, 2009 12:05 pm
Thanks for answering
Well, my load flags also have -g:
Code: Select all
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
And, in the end, the program crashed, I tried to locate the code dump:
8133883C:
8133884C:
8133885C:
And in the .elf.map file there isn't a single reference to a line 0x813....
I also tried again powerpc-gekko-addr2line -e Game.elf 0x8133883C but nothing... what am I missing?
-
Beau
- Posts: 6
- Joined: Thu Aug 13, 2009 7:13 pm
Post
by Beau » Thu Sep 10, 2009 11:46 pm
You've most likely corrupted/wrote to High MEM1 memory where the loader code is stored.
When your application exits, an attempt is made to re-load the loader (typically HBC) from that memory location.
I'm not sure if LibOGC currently protects against this in sbrk, so that LibOGC itself does not allocate memory out of the loader section when you call malloc.
Who is online
Users browsing this forum: No registered users and 8 guests