[ros-dev] RE: [ros-svn] [ion] 14799: KD System Rewrite:

Alex Ionescu ionucu at videotron.ca
Sun May 1 12:54:34 CEST 2005


Ge van Geldorp wrote:

>>From: ion at svn.reactos.com
>>
>>KD System Rewrite:
>>    
>>
>
>This utterly broke the GDB stub, to the point that I can't even use DbgPrint
>anymore to try and figure out what's wrong. May I suggest you go and read
>http://www.joelonsoftware.com/articles/fog0000000069.html first, revert this
>patch (so I can get on with my work), and then, if you still feel this
>overwhelming urge to rewrite, test all the functionality you're replacing
>(you obviously didn't even consider a "/DEBUGPORT=GDB" and boot test
>necessary) before recommiting.
>
>If I sound a little bit pissed-off, that's because it's exactly how I feel.
>This is not the first time I've been bitten by a rewrite. Back in January I
>spent a lot of time improving symbol handling and profiling, only to see you
>remove the profiling code a few weeks later, for a "new and improved"
>rewrite. Only problem is, the "new and improved" profiling system doesn't
>produce any output and is therefore useless. You said you would fix that in
>a weeks time, but now, months later, still nothing. I'll be damned if I'm
>going to let the same happen to the GDB stub, which I use on a daily basis.
>
>We all break stuff sometimes (God knows I do) and I can live with that. I
>can even live with rewrites when they're necessary for binary compatibility
>(after all, that's what this project is all about) but I'm highly suspicious
>of rewrites because of "well, uhmm, I think my way is cleaner".
>
>Gé van Geldorp.
>
>  
>
Hi,

I'd just like to add that in my humble opinion, adding 20 lines of code 
to support a new debugger is 100x better then adding 1000.
Imagine a complex debugging environment in ROS, where we support 
everything from re-assembling a function, disassembling, viewing the 
gdt, adding breakpoints, etc. Say we have 50 debugging functions. With 
the old system, each one would look like this:

if (KdDebuggerState & Foo)
  FooBreakPoint

if (KdDebuggerState & Foo1)
  Foo1BreakPoint

if (KdDebuggerState & Foo2)
  Foo2BreakPoint

if (KdDebuggerState & Foo3)
  Foo3BreakPoint

if (KdDebuggerState & Foo4)
  Foo4BreakPoint

if (KdDebuggerState & Foo5)
  Foo5BreakPoint

if (KdDebuggerState & Foo6)
  Foo6BreakPoint

....

if (KdDebuggerState & Foo10)
  Foo10BreakPoint

And this, for every single function. If you really think that's cleaner 
then parsing a list-entry and calling registered functions then 
err...ok, you're entitled to your opinion. So yeah "umm..my way is cleaner".


I removed the profiling code for binary compatibility and I asked you if 
that was ok. I know I haven't had time to write a profiler client and 
I'm sorry.

I'll fix the GDB stub.

Best regards,
Alex Ionescu






More information about the Ros-dev mailing list