Lazarus

Using the Lazarus IDE => Debugger => Topic started by: arent on October 12, 2020, 02:03:34 pm

Title: Debugger step-over issue (step over performs assembler step in)
Post by: arent on October 12, 2020, 02:03:34 pm
On last line the debugger does not step over, but opens the assembler IDE-window.
Problem remains if iniBaseName is assigned to another local string variable.
Happens all the time during debugging...

Is it possible to disable the assembly window altogether?

Code: Pascal  [Select][+][-]
  1. type
  2.   TMyComp =class(TComponent)
  3.   ...
  4.   private
  5.     FiniBaseName: string;  
  6.   published
  7.     property IniBaseName: String read FIniBaseName write FIniBaseName;
  8.   ...
  9.  
  10. procedure TMyComp.do();
  11. var
  12.   s: string
  13. begin
  14.    ...
  15.   if iniBaseName<>'' then
  16.      s := iniBbaseName + '_'          
  17.  

(Lazarus 2.0.10/FPC 3.2.0 svn 63662, win64)
Title: Re: Debugger step-over issue (step over performs assembler step in)
Post by: Martin_fr on October 12, 2020, 02:36:56 pm
Menu: Tools > Options
Page: Debugger > General

There is a property grid, find the option "FixIncorrectStepOver" and set it to true.


Alternatively search the forum for "LazDebuggerFp" (a.k.a "FpDebug") and install this.
Title: Re: Debugger step-over issue (step over performs assembler step in)
Post by: arent on October 12, 2020, 04:44:18 pm
Thanks!

I tried
Tools|Options|Debugger|general|Debugger specific options|FixIncorrectStepOver
but the assembly windows still activates, although now with
Code: ASM  [Select][+][-]
  1. 0000000100009554 664189dc                 mov    %bx,%r12w
  2. 0000000100009558 4885ff                   test   %rdi,%rdi
  3. 000000010000955B 7506                     jne    0x100009563 <fpc_ansistr_concat+99>
  4. 000000010000955D 664489e3                 mov    %r12w,%bx
  5. 0000000100009561 eb0b                     jmp    0x10000956e <fpc_ansistr_concat+110>
  6. 0000000100009563 4889f9                   mov    %rdi,%rcx
  7. 0000000100009566 e855190000               callq  0x10000aec0 <SYSTEM_$$_STRINGCODEPAGE$RAWBYTESTRING$$WORD>
  8. 000000010000956B 6689c3                   mov    %ax,%bx
  9. 000000010000956E 6689d8                   mov    %bx,%ax
  10. 0000000100009571 6685db                   test   %bx,%bx
  11. 0000000100009574 7412                     je     0x100009588 <fpc_ansistr_concat+136>
  12. 0000000100009576 662d0100                 sub    $0x1,%ax
  13. 000000010000957A 7514                     jne    0x100009590 <fpc_ansistr_concat+144>
  14. 000000010000957C e88f7cffff               callq  0x100001210  <__$dll$kernel32$GetOEMCP>
  15.  
at line 8
instead of
Code: ASM  [Select][+][-]
  1. fpc_ansistr_concat
  2. 0000000100009500 53                       push   %rbx
  3. 0000000100009501 57                       push   %rdi
  4. 0000000100009502 56                       push   %rsi
  5. 0000000100009503 4154                     push   %r12
  6. 0000000100009505 4155                     push   %r13
  7. 0000000100009507 4156                     push   %r14
  8. 0000000100009509 4157                     push   %r15
  9.  
at line 2

still jumps into assembly although a bit earlier.

I'm going to look at https://wiki.freepascal.org/LazDebuggerFp
Title: Re: Debugger step-over issue (step over performs assembler step in)
Post by: Martin_fr on October 12, 2020, 08:04:05 pm
Do you compile with Optimization disabled?
Title: Re: Debugger step-over issue (step over performs assembler step in)
Post by: arent on October 15, 2020, 09:40:53 pm
Quote
Do you compile with Optimization disabled?
Compiler Options | Compilation and Linking | Optimization levels = 0 (no optimization)
TinyPortal © 2005-2018