Einzelnen Beitrag anzeigen

freimatz

Registriert seit: 20. Mai 2010
1.378 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Erfahrungen mit DelphiCodeCoverage und "Delphi Code Coverage Wizards" #1

  Alt 23. Nov 2022, 15:55
Doch schon gleich der nächste Versuch. Dieser hat jedoch keinen Erfolg.
Es geht um das Modul wo ich den meisten Code gemacht habe. Im Gegensatz zum vorigen Versuch enthält dieser auch Klassen und Generics.
Der Wizard scheint seine Sache noch richtig zu machen. CodeCoverage.exe startet. Nach Prozess-Explorer wird auch das Testprojekt gestartet. Dann hängt CodeCoverage.exe lange Zeit mit ca. 8% CPU. Das Testprojekt zeigt sich jedoch überhaupt nicht. Nach langer Zeit ist die Sache zu Ende. Der Report ist da, jedoch ist die Coverage bei 0.
Bin nun im Debugger und bin nun hier.
Delphi-Quellcode:
function TDebugger.StartProcessToDebug: Boolean;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  Parameters: string;
  WorkingDir: PChar;
begin
  Parameters := FCoverageConfiguration.ApplicationParameters;
  FLogManager.Log(
    'Trying to start ' + FCoverageConfiguration.ExeFileName +
    ' with the Parameters :' + Parameters);

  FillChar(StartInfo, SizeOf(TStartupInfo), #0);
  FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
  StartInfo.cb := SizeOf(TStartupInfo);

  StartInfo.dwFlags := STARTF_USESTDHANDLES;
  StartInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE);
  StartInfo.hStdOutput := GetStdHandle(STD_OUTPUT_HANDLE);
  StartInfo.hStdError := GetStdHandle(STD_ERROR_HANDLE);

  WorkingDir := nil;
  if FCoverageConfiguration.UseTestExePathAsWorkingDir then
  begin
    WorkingDir := PChar(ExtractFilePath(FCoverageConfiguration.ExeFileName));
  end;

  Parameters := '"' + FCoverageConfiguration.ExeFileName + '" ' + Parameters;
  Result := CreateProcess(
    nil,
    PChar(Parameters),
    nil,
    nil,
    True,
    CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS + DEBUG_PROCESS,
    nil,
    WorkingDir,
    StartInfo,
    ProcInfo
  );

  FProcessID := ProcInfo.dwProcessId;
end;
Ich meine danach sollte das Testprojekt sichtbar sein. Was könnte da schief gehen?
Einige Werte:
Code:
Watch Name   Value
Parameters   '"J:\Bla\sysWin32\TestDomainBlub.exe" '
WorkingDir   nil {#0}
StartInfo   (68, nil {#0}, nil {#0}, nil {#0}, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, nil, 156, 160, 164)
ProcInfo   (508, 504, 15152, 11800)
WorkingDir zu setzen hat nichts gebracht.

Nachtrag: Habe in TDebugger.ProcessDebugEvents den Timeout erhöht. Er kommt nun nicht mehr bei "FLogManager.Log('Wait For Debug Event timed-out');" vorbei, hilft aber insgesamt auch nicht.

Geändert von freimatz (23. Nov 2022 um 16:35 Uhr)
  Mit Zitat antworten Zitat