Ok, I changed environment handling. Now the vars are
directly passed to
the
debuggee environment. The debugger itself has it's own
environment (you
currently cant modify it)
Marc
Hi Marc, I've found some problems:
Environment constructs like this:
mc=() { mkdir -p $HOME/.mc/tmp 2>/dev/null;
chmod 700 $HOME/.mc/tmp;
MC=$HOME/.mc/tmp/mc-$$;
/usr/bin/mc -P "$@" >"$MC";
cd "`cat $MC`";
rm -i -f "$MC";
unset MC
}
confuse the debugger, here is the output mixed with other valid ones:
[snip]
TCmdLineDebugger.SendCmdLn "-gdb-set env MAIL=/var/spool/mail/prog" TCmdLineDebugger.SendCmdLn "-gdb-set env mc=() { mkdir -p $HOME/.mc/tmp 2>/dev/null;
chmod 700 $HOME/.mc/tmp;
MC=$HOME/.mc/tmp/mc-$$;
/usr/bin/mc -P "$@" >"$MC";
cd "`cat $MC`";
rm -i -f "$MC";
unset MC
}"
TCmdLineDebugger.SendCmdLn "-gdb-set env
NLSPATH=/usr/share/locale/%l/%N"
[Debugger] Log output: &"chmod 700 $HOME/.mc/tmp;\n" [Debugger] Log output: &"Undefined command: \"chmod\". Try \"help\".\n"
TCmdLineDebugger.SendCmdLn "-gdb-set env OLDPWD=/home/prog" [Debugger] Log output: &"MC=$HOME/.mc/tmp/mc-$$;\n" [Debugger] Log output: &"Undefined command: \"MC\". Try \"help\".\n" TCmdLineDebugger.SendCmdLn "-gdb-set env
PATH=/usr//bin:/bin:/usr/bin::/usr/local/bin:/usr/X11R6/bin:/usr/games:/home/prog/bin" [Debugger] Log output: &"/usr/bin/mc -P \"" >\"$MC\";\n" [Debugger] Log output: &"Undefined command: \"\". Try \"help\".\n" TCmdLineDebugger.SendCmdLn "-gdb-set env PWD=/home/prog/lazarus" [Debugger] Log output: &"cd \"`cat $MC`\";\n"
[Debugger] Log output: &"\"`cat $MC`\";: No such file or directory.\n"
TCmdLineDebugger.SendCmdLn "-gdb-set env QT_XFT=0" [Debugger] Log output: &"rm -i -f \"$MC\";\n"
TCmdLineDebugger.SendCmdLn "-gdb-set env SECURE_LEVEL=2" [Debugger] Log output: &"unset MC\n"
[Debugger] Log output: &"Undefined unset command: \"MC\". Try \"help unset\".\n"
TCmdLineDebugger.SendCmdLn "-gdb-set env
SESSION_MANAGER=local/pinguino:/tmp/.ICE-unix/2085" [Debugger] Log output: &"}\n"
[Debugger] Log output: &"Undefined command: \"\". Try \"help\".\n"
another problem: If I put a check mark to the Display option, the following code executes:
322 procedure TRunParamsOptions.AssignEnvironmentTo(Strings:
TStrings);
323 begin
324 IDEProcs.AssignEnvironmentTo(Strings,UserOverrides);
325 if UseDisplay then
326 Strings.Values['DISPLAY']:=Display;
327 end;
the problem is in the line 326: TApplication.HandleException Operation not allowed on sorted StringLists.
If I uncheck the display option, all was ok until the moment to query the program info:
[snip]
TCmdLineDebugger.SendCmdLn "-gdb-set env "
[TDebugger.SetFileName] /home/prog/work/Lazarus/lgrid/test1 TCmdLineDebugger.SendCmdLn "-file-exec-and-symbols /home/prog/work/Lazarus/lgrid/test1"
TCmdLineDebugger.SendCmdLn "-gdb-set language pascal" [TDebugManager.OnDebuggerChangeState] state: dsStop [TDebugManager.DoInitDebugger] END
TGDBMIBreakPoint.SetLocation A TRUE TRUE
TGDBMIBreakPoint.SetLocation A TRUE TRUE
TCmdLineDebugger.SendCmdLn "-break-insert unittest1.pas:636" TCmdLineDebugger.SendCmdLn "-break-insert unittest1.pas:593" TCmdLineDebugger.SendCmdLn "-environment-cd
/home/prog/work/Lazarus/lgrid/"
TCmdLineDebugger.SendCmdLn "-gdb-set language pascal" TCmdLineDebugger.SendCmdLn "-break-insert -t main" TCmdLineDebugger.SendCmdLn "-exec-run"
TCmdLineDebugger.SendCmdLn "-break-insert FPC_RAISEEXCEPTION" TCmdLineDebugger.SendCmdLn "-break-insert FPC_BREAK_ERROR" TCmdLineDebugger.SendCmdLn "info program"
[Debugger] Target PID: 0
[TDebugManager.OnDebuggerChangeState] state: dsError Ooops, the debugger entered the error state
but I dont know if it is related. One question: why is the debug process running between application runs?.
Jesus Reyes A.
_________________________________________________________ Do You Yahoo!?
La mejor conexi�n a internet y 25MB extra a tu correo por $100 al mes. http://net.yahoo.com.mx