anchor.diff:    if childid < 0 then begin
       Result := false;
     end else if childid = 0 then begin
  -    res := ptrace(PTRACE_TRACEME, childid, nil, nil);
  +    res := ptrace(PTRACE_TRACEME, 0, nil, nil);
       if res < 0 then Exit; // process cannot be traced
       FpExecV(ACmdLine, nil);
     end else
       Result := true;
   end;
   
  -function TUnixProcess.StartProcess(const ACmdLine: String): Boolean;
  +function TLinuxProcess.StartProcess(const ACmdLine: String): Boolean;
   begin
     Result := ForkAndDebugProcess(ACmdLine, fChild);
     if not Result then Exit;
   end;
   
  -procedure TUnixProcess.Terminate;
  +procedure TLinuxProcess.Terminate;
   begin
   
   end;
   
  -function TUnixProcess.WaitNextEvent(var Event: TDbgEvent): Boolean;
  +function TLinuxProcess.WaitNextEvent(var Event: TDbgEvent): Boolean;
   var
     Status : Integer;
   begin
  
positive.code: 
  type
  
    { TUnixProcess }
  
    TUnixProcess = class(TDbgProcess)
    private
      fState  : TDbgState;
      fChild  : TPid;
  
negative.code:     procedure Terminate; override;
    end;
  
  function DebugLinuxProcessStart(const ACmdLine: String): TDbgProcess;
  
  implementation
  
  function DebugLinuxProcessStart(const ACmdLine: String): TDbgProcess;
  var
    dbg : TLinuxProcess;
  begin
    dbg := TLinuxProcess.Create;
    dbg.StartProcess(ACmdLine);
    Result := dbg;
  end;
  
  { TLinuxProcess }
  
  function TLinuxProcess.GetProcessState: TDbgState;
  begin
    Result := fState;
  end;
  