Re: Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-31 Thread Gabriel Zachmann via Cocoa-dev
I think , I found the solution, so just for the record
(so that others will find it using Google):

Launch the app in the debugger on the command line :

   lldb /private/tmp/Build/Products/Debug/MyApp.app

In lldb's command line:

   process handle -p true -s false -n true   // otherwise lldb will stop on 
SIGUSR1

Set your breakpoints as needed, then

   r --no-stdin

Then you can 'kill -30 ' without getting those annoying breaks in 
mach_msg2_trap.


Hope this helps.
Gabriel.



smime.p7s
Description: S/MIME cryptographic signature
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-31 Thread Alex Zavatone via Cocoa-dev
That’s a great tip Jens.  Gabriel, if you build your app with different 
dev/release schemes, you could detect your build scheme and then execute the 
desired process based on if you’re able to debug or not.  

Just expose the environment variable for $CONFIGURATION in an info.plist file, 
read it into a variable and then manage your response based on what the value 
is.  If you want details on that, contact me off list and I’ll show you.

Reference:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

Hopefully, Jens’s tip will get you what you need!

Best,
Alex Zavatone

> On Jan 31, 2024, at 12:20 AM, Jens Miltner via Cocoa-dev 
>  wrote:
> 
> Xcode intercepts signals in the process being debugged (for good reason).
> You can ignore specific signals in Xcode (i.e. pass them through to the 
> process being debugged) by breaking into the debugger, then enter in the 
> Xcode console part (example for SIGUSR1):
> 
>   process handle SIGUSR1 -s false
>   process handle SIGUSR1 -p true
> 
> HTH,
> -jens
> 
> 
>> Von: Gabriel Zachmann 
>> Betreff: Xcode interferes with signal handler (was: Sending SIGUSR1 to a 
>> process)
>> Datum: 30. Januar 2024 um 20:31:45 MEZ
>> An: "cocoa-dev@lists.apple.com" 
>> 
>> 
>> I am setting up a signal handler in my app like this:
>> 
>>  void *e = signal( SIGUSR1, signal_handler );
>>  if ( e == SIG_ERR )
>> ...
>> 
>> It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of 
>> Xcode.
>> 
>> When I launch it from Xcode, and I send a SIGUSR1 to my app, it always 
>> breaks at mach_msg2_trap.
>> Obviously, this is a bit tedious for developing, since now I always have to 
>> go through Product / Archive / Distribute ...
>> 
>> Any ideas, how I can prevent this from happening?
>> 
>> And it's unclear to me what's going on. Can Xcode really prevent signal(3) 
>> from installing a signal handler?
>> Or does a kill on the command line deliver the signal to several processes, 
>> one of them, maybe, an ancillary process from Xcode?
>> 
>> 
>> Best regards, Gabriel
>> 
> ___
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/zav%40mac.com
> 
> This email sent to z...@mac.com

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-30 Thread Jens Miltner via Cocoa-dev
Xcode intercepts signals in the process being debugged (for good reason).
You can ignore specific signals in Xcode (i.e. pass them through to the process 
being debugged) by breaking into the debugger, then enter in the Xcode console 
part (example for SIGUSR1):

process handle SIGUSR1 -s false
process handle SIGUSR1 -p true

HTH,
-jens


> Von: Gabriel Zachmann 
> Betreff: Xcode interferes with signal handler (was: Sending SIGUSR1 to a 
> process)
> Datum: 30. Januar 2024 um 20:31:45 MEZ
> An: "cocoa-dev@lists.apple.com" 
> 
> 
> I am setting up a signal handler in my app like this:
> 
>   void *e = signal( SIGUSR1, signal_handler );
>   if ( e == SIG_ERR )
>  ...
> 
> It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of Xcode.
> 
> When I launch it from Xcode, and I send a SIGUSR1 to my app, it always breaks 
> at mach_msg2_trap.
> Obviously, this is a bit tedious for developing, since now I always have to 
> go through Product / Archive / Distribute ...
> 
> Any ideas, how I can prevent this from happening?
> 
> And it's unclear to me what's going on. Can Xcode really prevent signal(3) 
> from installing a signal handler?
> Or does a kill on the command line deliver the signal to several processes, 
> one of them, maybe, an ancillary process from Xcode?
> 
> 
> Best regards, Gabriel
> 
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Xcode interferes with signal handler (was: Sending SIGUSR1 to a process)

2024-01-30 Thread Gabriel Zachmann via Cocoa-dev
I am setting up a signal handler in my app like this:

   void *e = signal( SIGUSR1, signal_handler );
   if ( e == SIG_ERR )
  ...

It works (i can 'kill -30 '), BUT ONLY, if I run my app outside of Xcode.

When I launch it from Xcode, and I send a SIGUSR1 to my app, it always breaks 
at mach_msg2_trap.
Obviously, this is a bit tedious for developing, since now I always have to go 
through Product / Archive / Distribute ...

Any ideas, how I can prevent this from happening?

And it's unclear to me what's going on. Can Xcode really prevent signal(3) from 
installing a signal handler?
Or does a kill on the command line deliver the signal to several processes, one 
of them, maybe, an ancillary process from Xcode?


Best regards, Gabriel





smime.p7s
Description: S/MIME cryptographic signature
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com