Unfortunately GDB is really the best way to debug machine-level problems in UnixSPARCs, which is kind of sad.
The basic thing to understand is that a segfault is a kind of exception, and exceptions cause the program to break into the debugger, if one is attached. They do this so that you can examine the state of the processor registers and memory at the moment of the crash.
You should look at the instruction counter register (%ip). This will contain the address of the last instruction to execute, which is the instruction that triggered the segfault. It will be a load or store operation, so you can look at which register contains its source/destination memory address, and figure out why that address is bad (usually it's NULL, or some garbage number that isn't a valid address).
The other thing you can do is compile your process to emit a core dump when it fails, which will write out a snapshot of the program's state at the moment it died as a big file on disk. Unfortunately, the program used to read core dumps is... gdb.