From: maennig@siggi.informatik.uni-dortmund.de (Olaf Maennig)
Newsgroups: comp.sys.mac.system,comp.sys.mac.programmer
Subject: SADE --- the worst debugger I ever used!!!!!
Date: 23 Dec 1992 10:57:25 GMT
Organization: CS Department, Dortmund University, Germany
Distribution: world
Reply-To: maennig@siggi.informatik.uni-dortmund.de
NNTP-Posting-Host: siggi.informatik.uni-dortmund.de

Hi! (frustrated greeting)

I have developed programs on several Sun SPARCs and DEC so far. A month ago
I started in a new job, in which I have to program the Mac (System 7) with
MPW C/C++. I have never used a Macinotsh before, and I started with a high
motivation due to the knowledge that the Mac is supposed to be one of the
user-friendliest computers.

This motivation turned into frustration soon. I find the GUI extremely slow
and in comparison to X11 it is in my opinion really poor. But that's another
thing and not the subject here.

What's disgusting to me is the SADE debugger. I work with version 1.3 and I
think I've never sweared so much on a single morning. Maybe I'm using the
program the wrong way, but first of all is the manual the most unuseful
thing in that package. It's full of mistakes, contradictions, and most
important: it's incomplete.

An example? See page 59: "Referencing structured types". The selection,
pointer dereference, and array access operators are listed. "The rest of
this section illustrates the use of all three of these operators." Ha! I
want to know where the array access operator is illustrated?! That's what
I'm interested in at the moment. I don't achieve to get the content of an
character array (not the dereference of an char* pointer!).

What I get after selecting the variable "array" and choosing the menu "show
value" is:
	`array = 84, ...		# content: "Text"

How nice would it be to get
	`array = ['T' 'e' 'x' 't']
or the like.

I REALLY don't like to step through the array manually with
	`array[1] <ENTER>
and get a number which I have to look up in an ASCII table!!!!!!

By the way, here we see another mistake in the manual. Somewhere it says
that arrays are 1-based in SADE. That's wrong. Indeed, arrays start with
index 0, as usual.

So, how can I tell the debugger to display my array?

Another thing is that arrays aren't even accessible when their sizes are
"too big". When I initialize a 512-byte char array in the beginning, SADE
simply states that the variable is too big to fit into the environment.
HORRIBLE!!

Then, what will I have to do when an error occurs which makes the examined
program crash? I will have to restart it. That's fine. But when I want to
debug a program which runs as an MPW tool, I will kill the whole MPW with
"kill" or "untarget". Re-start MPW, correct the program, compile and debug
once more. When there is still the error --- crash! Kill whole MPW,
re-start, ... BULLSH...!!!

Finally, I never saw a program which uses windows in such a heavy way. For
nearly every little output a single window is opened. That's alone is not
that bad, but when I trace my program it's sooooo slow. Additionally, before
(or after?) each trace step the source file window is moved into the
background, all window frames are drawn new, and right after that the source
file window is moved to the top, and its contents are re-drawn. I never saw
such a stupid thing! Not only it is stupid, it is additionally slow.

Okay, that's what I went through the last few weeks. Now, the most important
question to me: IS THERE ANOTHER AND BETTER DEBUGGER OUT THERE?
If no, I would like to get in contact with other SADE users. Maybe they can
give me solutions to the described problems.

If you want to prevent a suicide, help a little German Macintosh programmer!
-- 
 ---------------------------------------------------------------------------
     _                   Department of Computer Science IV
    / \     |\/|         University of Dortmund, Germany
    \_/laf  |  |aennig   e-mail: maennig@siggi.informatik.uni-dortmund.de
         -----------------------------------------------------------
         "To understand recursion you need to understand recursion."
 ---------------------------------------------------------------------------