dalehenrich / tode

tODE - the Object-centric Development Environment. Smalltalk. development, deconstructed and a development environment for GemStone/S. Part of the GsDevKit tool set.
https://github.com/GsDevKit/gsDevKitHome#open-source-development-kit-for-gemstones-64-bit-
MIT License
33 stars 16 forks source link

DNU in TDDebugTool for remote debugging #312

Open dassi opened 4 years ago

dassi commented 4 years ago

https://github.com/dalehenrich/tode/blob/0f450409758354c042ec6b6c6f4645b677216d07/repository/Topez-Server-DebugTools.package/TDDebugTool.class/class/setOrClearBreakpoint..st#L5

self topez is not available on the class side of TDDebugTool. Remote breakpoints from tODE into a Seaside gem do not work, since a DNU is thrown.

dalehenrich commented 4 years ago

@dassi, it looks like you might be able to get away with the following implementation (eliminating the topez call):

setOrClearBreakpoint: aGemToGemAnnouncement
  "Session received a Gem to Gem signal"

  [ aGemToGemAnnouncement signalMessage evaluate ]
    on: Error
    do: [ :ex | 
      | stdout |
      (ObjectLogEntry
        error:
          'ERROR during: ' , aGemToGemAnnouncement signalMessage printString
        object: ex) addToLog.   "Cannot count on being in a transaction when exception is signalled, so dump info to stdout"
      stdout := GsFile stdoutServer.
      stdout
        nextPutAll:
          '----------- Remote Breakpoint ERROR Encountered: '
            , DateAndTime now printString.
      stdout cr.
      stdout nextPutAll: ex description.
      stdout cr.
      stdout nextPutAll: (GsProcess stackReportToLevel: 300).
      stdout nextPutAll: '-----------'.
      stdout cr.
      stdout close ]

I probably don't have a test case for remote debugging and when I added the execution environments(4bc77aa8d3), I imagine I broke remote debugging by accident ... Could you give this patch a try and either submit a PR or let me know that the patch works and I'll do the PR myself.

Thanks for the report!

dassi commented 4 years ago

Hi Dale

I will work on it an send a PR! Thanks for the hint.

Cheers, Andreas


Brot? www.brotrezept.ch!

Andreas Brodbeck Software-Macher mindclue GmbH Dipl. El.-Ing. ETH

+41 55 622 26 24 www.mindclue.ch

Am 06.05.2020 um 19:14 schrieb Dale Henrichs notifications@github.com:

@dassi https://github.com/dassi, it looks like you might be able to get away with the following implementation (eliminating the topez call):

setOrClearBreakpoint: aGemToGemAnnouncement "Session received a Gem to Gem signal"

[ aGemToGemAnnouncement signalMessage evaluate ] on: Error do: [ :ex | | stdout | (ObjectLogEntry error: 'ERROR during: ' , aGemToGemAnnouncement signalMessage printString object: ex) addToLog. "Cannot count on being in a transaction when exception is signalled, so dump info to stdout" stdout := GsFile stdoutServer. stdout nextPutAll: '----------- Remote Breakpoint ERROR Encountered: ' , DateAndTime now printString. stdout cr. stdout nextPutAll: ex description. stdout cr. stdout nextPutAll: (GsProcess stackReportToLevel: 300). stdout nextPutAll: '-----------'. stdout cr. stdout close ] I probably don't have a test case for remote debugging and when I added the execution environments(4bc77aa https://github.com/dalehenrich/tode/commit/4bc77aa8d367c57d39e42edd51b3be3106242f56), I imagine I broke remote debugging by accident ... Could you give this patch a try and either submit a PR or let me know that the patch works and I'll do the PR myself.

Thanks for the report!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dalehenrich/tode/issues/312#issuecomment-624776585, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAANFHNYI2PMWK5XE4W7T4TRQGLILANCNFSM4M2IEBOQ.