之前已修復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上測試通過。


浙公網(wǎng)安備 33010602011771號