OS_ACTIVITY_MODE não funcionou para mim ( pode ter sido porque eu digitei disable
como disabled
, mas não é mais natural?!?), Ou pelo menos não impedi uma grande quantidade de mensagens. Então aqui está o verdadeiro negócio com as variáveis de ambiente.
https://llvm.org/svn/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
lldb_private::Error
PlatformDarwin::LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) {
// Starting in Fall 2016 OSes, NSLog messages only get mirrored to stderr
// if the OS_ACTIVITY_DT_MODE environment variable is set. (It doesn't
// require any specific value; rather, it just needs to exist).
// We will set it here as long as the IDE_DISABLED_OS_ACTIVITY_DT_MODE flag
// is not set. Xcode makes use of IDE_DISABLED_OS_ACTIVITY_DT_MODE to tell
// LLDB *not* to muck with the OS_ACTIVITY_DT_MODE flag when they
// specifically want it unset.
const char *disable_env_var = "IDE_DISABLED_OS_ACTIVITY_DT_MODE";
auto &env_vars = launch_info.GetEnvironmentEntries();
if (!env_vars.ContainsEnvironmentVariable(disable_env_var)) {
// We want to make sure that OS_ACTIVITY_DT_MODE is set so that
// we get os_log and NSLog messages mirrored to the target process
// stderr.
if (!env_vars.ContainsEnvironmentVariable("OS_ACTIVITY_DT_MODE"))
env_vars.AppendArgument(llvm::StringRef("OS_ACTIVITY_DT_MODE=enable"));
}
// Let our parent class do the real launching.
return PlatformPOSIX::LaunchProcess(launch_info);
}
Portanto, definir OS_ACTIVITY_DT_MODE
"NÃO" nas variáveis de ambiente (método GUI explicado na captura de tela de Esquemas na resposta principal) faz com que funcione para mim.
No que diz respeito NSLog
ao depósito de mensagens do sistema, erros e sua própria depuração: provavelmente é necessária uma abordagem de registro real, por exemplo, https://github.com/fpillet/NSLogger .
OU
Beba o novo Kool-Aid: http://asciiwwdc.com/2016/sessions/721 https://developer.apple.com/videos/play/wwdc2016/721/
Não é de surpreender que haja alguns problemas depois de revisar toda a API de log.
TERMO ADITIVO
Enfim, NSLog
é apenas um calço:
https://developer.apple.com/library/content/releasenotes/Misc Miscellaneous/RN-Foundation-OSX10.12/
NSLog / CFLog
O NSLog agora é apenas um calço para o os_log na maioria das circunstâncias.
Agora faz sentido citar a fonte para a outra variável env. Um lugar bastante díspar, desta vez dos internos da Apple. Não sei por que eles estão sobrepostos. [Comentário incorreto sobre NSLog
removido]
[Editado em 22 de setembro]: Gostaria de saber o que "release" e "stream" fazem diferente de "debug". Fonte insuficiente.
https://github.com/macosforge/libdispatch/blob/8e63547ea4e5abbfe55c0c3064181c4950a791d3/src/voucher.c
e = getenv("OS_ACTIVITY_MODE");
if (e) {
if (strcmp(e, "release") == 0) {
mode = voucher_activity_mode_release;
} else if (strcmp(e, "debug") == 0) {
mode = voucher_activity_mode_debug;
} else if (strcmp(e, "stream") == 0) {
mode = voucher_activity_mode_stream;
} else if (strcmp(e, "disable") == 0) {
mode = voucher_activity_mode_disable;
}
}