[Lazarus] Debugger stops in c dll even when no breakpoint set

Luca Olivetti luca at wetron.es
Fri Oct 29 10:15:56 CEST 2021


El 28/10/21 a les 14:46, Martin Frb via lazarus ha escrit:
> On 28/10/2021 14:28, Christo Crause via lazarus wrote:
>>
>> On Thu, Oct 28, 2021 at 2:01 PM Luca Olivetti via lazarus 
>> <lazarus at lists.lazarus-ide.org> wrote:
>>
>>
>>     77045AC4 cc                       int3
>>
>>
>> The Int3 instruction means break, so this is the expected behaviour.  
>> If there is no debugger inserted break point for this location, it 
>> must be compiled into the dll code.  This means not stopping here will 
>> be problematic, unless you use some kind of script to step over this 
>> break instruction automatically.  I do not think it is possible from 
>> inside Lazarus, but haven't actually tried to work around something 
>> similar before.
>>
> 
> 
> FpDebug refers unknown "int3" back to the application, and lets the 
> application handle them itself.
> 
> At least FpDebug does this by default. There is an option in the global 
> settings to stop.
> But if the dll expects the int3, and therefore wants to handle it 
> itself.....


Any hint on why it hits that int3?

Now I recompiled pascallog.c (I changed its location, no wonder lazarus 
complained it couldn't find it), and lazarus instead of showing the 
assembler window shows the c file stopping at the call to "free".

I checked and the pointer passed to "free" is the same that "malloc" 
returned.

malloc -> 
https://github.com/fluisgirardi/fpopen62541/blob/d95839c908657f58bf2fde4533625a61cbccb8c7/pascallog/pascallog.c#L59

free -> 
https://github.com/fluisgirardi/fpopen62541/blob/d95839c908657f58bf2fde4533625a61cbccb8c7/pascallog/pascallog.c#L51


Bye
-- 
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010)  Fax +34 93 5883007


More information about the lazarus mailing list