<p>Am 27.03.2015 14:17 schrieb "Joost van der Sluis" <<a href="mailto:joost@cnoc.nl">joost@cnoc.nl</a>>:<br>
><br>
> On 03/27/2015 01:45 PM, JuuS wrote:<br>
>><br>
>> procedure BreakIf( b : Boolean );<br>
>> begin<br>
>>   if b then<br>
>>   asm<br>
>>     INT 3    <======debugger would then stop here<br>
>>              and one could then F8 step to the offending<br>
>>              routine based on the boolean condition passed<br>
>>   end;<br>
>> end;<br>
>><br>
>> I believe this is windows specific (?) and I'm now working on Linux<br>
>> machines.<br>
>><br>
>> The question is:<br>
>><br>
>> This does not work in Linux and I wonder if there is a similar way to<br>
>> achieve this in Linux environment?<br>
><br>
><br>
> Wow.. that's a nasty trick....<br>
><br>
> And it should still work, also on Linux.<br>
><br>
> But I think that debuggers nowadays are more clever, they detect that the breakpoint is actually self-inflicted, and so they decide to continue. After all: the developer can have it's reasons to call this interrupt, and the debugger should not influence normal execution.</p>
<p>This might be true on an embedded system, but if you run any of the normal OSes where you can't modify interrupt handlers anyway then on x86(_64) INT 3 (or $CC) /always/ means breakpoint. And from experience I know that both GDB and WinDBG respect these as they should.</p>
<p>Regards,<br>
Sven</p>