之前已修复fpdebug中文变量的Bug,但GDB还存在问题(提示:Invalid character xxxx in expression)
修复步骤:
打开lazarus/components/lazdebuggergdbmi/gdbmidebugger.pp,按红色代码修改。
在TGDBMIExceptionInfo = record后添加function ischinese(s:string):string(1790行):TGDBMIExceptionInfo = record ObjAddr: String; Name: String; end; function ischinese(s:string):string; var i:integer; begin result:=s; for i:=1 to length(s) do begin if ord(s[i])>127 then begin result:=''''+s+''''; break; end; end; end; { =========================================================================== } { Some win32 stuff } { =========================================================================== } {$IFdef MSWindows} var DebugBreakAddr: Pointer = nil;
12468行
if tfClassIsPointer in TargetInfo^.TargetFlags then AFlags := AFlags + [gtcfClassIsPointer]; if FullTypeInfo then AFlags := AFlags + [gtcfFullTypeInfo]; Result := TGdbType.CreateForExpression(ischinese(AExpression), AFlags, wdfDefault, ARepeatCount); while not Result.ProcessExpression do begin if Result.EvalError then break;
修改后重新编译lazarus。
这个方法在银河麒麟和UOS上测试通过。