Seite 1 von 3

Probleme mit jaPBe und Debugger

Verfasst: 25.05.2009 11:47
von haggi
Hallo leute, hab ein oder zwei fehler festgestellt. konkret geht es um readatastring und cdrecord.

ich hab keine ausgabe wenn ich unter japbe mit dem debugger mir die daten ausgeben lasse. ich bekomme teilweise nur leere zeilen. wenn ich dass ganze über den pure basic editor mache, funktioniert es. wenn ich den externen debugger einsetze ist das problem das selbe wie bei japbe weshalb es wohl ein problem vom externen debugger ist. beim internen ist es so, dass es meistens geht und manchmal nicht. beim externen ist es so, dass es mal ne zeit funktioniert hat und jetzt nicht mehr. der code wurde nur umgestellt, und nichts herausgenommen etc.

beim normalen pb editor (mit debug) gibt es dagegen n problem das er immer wieder probleme bringt, betreffs arbeitsspeicher access, dass welches er beim externen debugger mit japbe nicht bringt. gruß haggi


Überschrift aussagekräftiger gestaltet - Kaeru fecit

Verfasst: 25.05.2009 11:54
von Fluid Byte
Alter, wie oft noch? Code bitte! :freak:

Verfasst: 25.05.2009 13:07
von Kaeru Gaman
worum gehts eigentlich?

debugger-probleme mit jaPBe?

und um welche Befehle?

also, "readatastring" ist keiner, "cdrecord" auch nicht.

es ist nervig, dauernd rumraten zu müssen, was Kollegen meinen.

Bitte anschauen!

Verfasst: 25.05.2009 13:20
von haggi
He leutz sorry hab den code vorher vergessen, und das readdatastring ist natürlich readprogramdata :-) hoffe die 2 routinen reichen euch :-) ansonsten kurz melden :-)

hier die 2 proceduren :-)

Code: Alles auswählen


Procedure checkdisk(dummy.l)
  ; Überprüft ob die cd oder dvd ller sind! wenn diese leer ist wird der thread beendet!
  globals\programm = globals\Brennenginepfad + globals\Brennendineexe.s
  globals\parameter = "dev=1,0,0 -minfo"
  globals\sofortverarbeitung = "nein"
 ClearList(templist())
  befehlausfuehren(dummy.l)
 
 ResetList(templist())
  ;ClearList(Laufwerke())

  For i = 1 To ListSize(templist())
    NextElement(templist())
    If FindString(templist(),"session status:",1) <>0 
      Debug templist()
      If FindString(templist(),"empty",1)<> 0
        globals\sessionleer = 1
        If globals\discleer = 1
          Goto exitsubcheckcd
        EndIf
        
      EndIf
    EndIf
    
    If FindString(templist(),"disk status:",1) <>0 
      Debug templist()
      If FindString(templist(),"empty",1)<> 0
        globals\discleer = 1
        If globals\sessionleer = 1
          Goto exitsubcheckcd
        EndIf
      EndIf
    EndIf  
    
    If FindString(templist(),"cannot load media with this drive!",1) <> 0
      Debug "kein medium eingelegt! "
      Goto exitsubcheckcd
    EndIf
    
    If FindString(templist(),"disk status:",1) <>0 
      Debug templist()
      If FindString(templist(),"complete",1)<> 0
        globals\programm = globals\Brennenginepfad + globals\Brennendineexe.s
        globals\parameter = "dev=1,0,0 -eject"
        globals\sofortverarbeitung = "nein"
        befehlausfuehren(dummy.l)
        Goto exitsubcheckcd
      EndIf
    EndIf
    
    
    If FindString(templist(),"session status:",1) <>0 
      Debug templist()
      If FindString(templist(),"complete",1)<> 0
        globals\programm = globals\Brennenginepfad + globals\Brennendineexe.s
        globals\parameter = "dev=1,0,0 -eject"
        globals\sofortverarbeitung = "nein"
        befehlausfuehren(dummy.l)
        Goto exitsubcheckcd
      EndIf
    EndIf    
    
  Next

  
  exitsubcheckcd:
  
  End
EndProcedure

Procedure befehlausfuehren(dummy.l)
  
  
  globals\Brennenginepfad = "C:\cdrtools\"
  globals\Brennendineexe = "cdrecord.exe"
  
  prgID = RunProgram(globals\programm , globals\parameter, "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Error|#PB_Program_Hide)
; prgID = RunProgram( "C:\cdrtools\cdrecord.exe" , "dev=1,0,0 -minfo" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Error|#PB_Program_Hide)
  If globals\sofortverarbeitung = "nein"
    ClearList(templist()) 
  EndIf
  If prgID  
    While ProgramRunning(prgID) <> 0
      If globals\sofortverarbeitung = "nein"
        ;Debug "keine sofortverarbeitung"
        AddElement(templist())
        globals\time = ElapsedMilliseconds()
     
          templist() = ReadProgramString(prgID) 
          Debug ReadProgramString(prgID) 
      Else
        globals\time = ElapsedMilliseconds()
        ;globals\direktausgabestring = ""
        globals\direktausgabestring = ReadProgramString(prgID)
        
        
      EndIf
    Wend
    ;  AddGadgetItem(1, -1, "Exitcode: " + Str(ProgramExitCode(prgID))  )
    Debug "Exitcode: " + Str(ProgramExitCode(prgID))
    KillProgram(prgID)
    CloseProgram(prgID)
    
  EndIf
EndProcedure


Verfasst: 25.05.2009 13:28
von Kaeru Gaman
> und das readdatastring ist natürlich readprogramdata

oh ja, völlig selbstverständlich!


globals\Brennendineexe = "cdrecord.exe"
Endine? Bergamo?

... mit EnableExplicit wäre das nicht passiert.

Verfasst: 25.05.2009 13:34
von haggi
he, ne ist die schily-0.9 laut ausgabe cdrecord hier mal die ausgabe bei minfo hoffe dass reicht dir ja so kann das mit explizit passieren :-)
gruß

p.s. früher hat es aber witzigerweise funktioniert auch mit dem externen debugger :-)

Code: Alles auswählen

C:\cdrtools>cdrecord dev=1,0,0 -minfo
Cdrecord-ProDVD-ProBD-Clone 2.01.01a55 (i686-pc-cygwin) Copyright (C) 1995-2008
Jörg Schilling
scsidev: '1,0,0'
scsibus: 1 target: 0 lun: 0
Using libscg version 'schily-0.9'.
Device type    : Removable CD-ROM
Version        : 0
Response Format: 3
Capabilities   :
Vendor_info    : 'TSSTcorp'
Identifikation : 'CDDVDW SN-S083B '
Revision       : 'SB00'
Device seems to be: Generic mmc2 DVD-R/DVD-RW/DVD-RAM.
Using generic SCSI-3/mmc   CD-R/CD-RW driver (mmc_cdr).
Driver flags   : MMC-3 SWABAUDIO BURNFREE
Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R
Mounted media class:      CD
Mounted media type:       CD-R
Disk Is not erasable
data type:                standard
disk status:              complete
session status:           complete
BG format status:         none
first track:              1
number of sessions:       1
first track in last sess: 1
last track in last sess:  1
Disk Is not unrestricted
Disk type: CD-DA or CD-ROM
Disk id: 0x871838
last start of lead in: 716730
last start of lead out: 1166730

Track  Sess Type   Start Addr End Addr   Size
==============================================
    1     1 Data   0          1068       1069

Last session start address:         0
Last session leadout start address: 1069

C:\cdrtools>

Verfasst: 25.05.2009 14:42
von edel
Kaeru Gaman hat geschrieben:> und das readdatastring ist natürlich readprogramdata

oh ja, völlig selbstverständlich!


globals\Brennendineexe = "cdrecord.exe"
Endine? Bergamo?

... mit EnableExplicit wäre das nicht passiert.
EnableExplicit ? Selbst wenn man sich da vertippt haette, wuerde der
compiler so oder so meckern.

Verfasst: 25.05.2009 14:43
von Kaeru Gaman
egal, dann eben nicht explicit, aber trotzdem bergamo... /:->

Verfasst: 25.05.2009 14:49
von haggi
und was sagt uns das jetzt, wenn das bergano ist? gibts da probleme? alternativen etc.? gruß

Verfasst: 25.05.2009 14:57
von Kaeru Gaman
die probleme werden wohl nicht an bergamo liegen, aber falsch geschrieben ist's trotzdem.

da ich jaPBe nicht habe kann ich deine Aussage nicht überprüfen.
es lag nur in meinem Interesse, überhaupt mal deine Fragestellung nachvollziebar zu machen.

... debuggt er denn andere strings wie es sein soll?

... hat der string den du debuggen willst überhaupt einen Inhalt?
ermittel doch mal die länge und lass die ausgeben.


mal abgesehen davon, dass jaPBe kein internes Werkzeug von PureBasic ist, es also weiniger in die Bug-Sektion gehört...