[M3devel] I don't know what changed, or when, but thanks!
Rodney M. Bates
rodney_bates at lcwb.coop
Thu Jul 11 22:07:23 CEST 2013
On 07/11/2013 04:08 AM, mika at async.caltech.edu wrote:
> This is just a pet peeve of mine, but I never remember to capitalize "Modula-3" right.
> There is no way to make m3gdb also recognize
> set lang m3
> set lang modula3
> set lang modula-3
> set lang m0dulaIII
Hmm,, I thought I had implemented recognition of several variants. From:
"In case you have trouble remembering which spelling of the language name to use, it accepts the
cartesian product of "Modula" spelled out or abbreviated with a single "M", lowercase/uppercase "M", and
with/without the hyphen."
But this is for the "info Modula-3 command, not "set lang Modula-3".
I'll add that to my list. I may not do the arbitrary mixed case,
nor the Roman numeral, though, just yet :-).
> "Rodney M. Bates" writes:
>> If you get m3gdb to realize this is modula-3 code, there will be a lot
>> more useful info in the backtrace, like parameter values. Probably just
>> doing a 'frame 17', or any M3 frame will do it, or 'set lang Modula-3'.
>> If you are using the head compiler and debugger, you will need very
>> recent ones (perhaps in the last month?), as changes in the code
>> generator created some regressions. All that I have seen are now
>> fixed in the current head.
>> On 07/08/2013 08:45 AM, Hendrik Boom wrote:
>>> Years ago, when a Modula 3 program failed because I called an absent
>>> method, it was difficult findig where the error was.
>>> But yesterday, I just ran the program in m3gdb and got a backtrace
>>> after failure.
>>> Of course the backtrace was full of apparent gibberish, but right in
>>> the middle is said:
>>> at ../src/runtime/common/RTException.m3:25
>>> #14 0xb6e3631c in Raise (act=Invalid C/C++ type code 30 in symbol
>>> ) at ../src/runtime/ex_frame/RTExFrame.m3:29
>>> #15 0xb6e30d1d in Fail (rte=Invalid C/C++ type code 23 in symbol table.
>>> ) at ../src/runtime/common/RTType.m3:850
>>> #16 0xb6e30c4e in UndefinedMethod (self=Invalid C/C++ type code 46 in
>>> symbol table.
>>> at ../src/runtime/common/RTType.m3:834
>>> #17 0x08063d45 in shift (new=Invalid C/C++ type code 26 in symbol
>>> ) at ../src/Parse.m3:115
>>> ---Type <return> to continue, or q <return> to quit---
>>> #18 0x08062fc4 in parse (input=Invalid C/C++ type code 26 in symbol
>>> ) at ../src/Parse.m3:354
>>> #19 0x08065be3 in Main (mode=Invalid C/C++ type code 39 in symbol
>>> ) at ../src/Main.m3:202
>>> So it was quite clear I had to look at ../src/Parse.m3:115, and it was
>>> obvious where I had left our a shift := shift line in an OVERRIDES
>>> -- hendrik
More information about the M3devel