Вопрос к мастерам дебаггинга
Времени написать что-то умное и развернутое нет.
Ну да ладно, лучше чаще писать загадки (?) чем ничего не писать. Поэтому будем делать это не на нашем внутреннем форуме, а здесь. На этот раз вопрос непростой, не на двадцать копеек, а на рупь пясят!

Итак, вы отдыхаете с друзьями. Ваш друг говорит:
- Даже не зная об этом, пользователь постоянно применяет базовую технологию Apple Script. Многочисленные компоненты Мака за кадром общаются посредством событий Apple Events, т. е. сообщений, передающих инструкции или данные от программы к программе. Если к псевдониму применяется команда Show Original (Показать оригинал) или к файлу (папке) – команда Get Info (Свойства), то событие Apple Event подскажет Finder, как следует откликнуться на это.
Его утверждение про Finder кажется вам весьма спорным.
Как вы будете проверять это утверждение, чтобы понять ошибается он или нет?


Комментариев: 3
У меня Finder отсылал AppleEvents только в Dock, при открытии Get Info, либо Show Original никаких событий не отправлялось. Мониторил так:
# export AEDebug=1
# export AEDebugSend=1
# export AEDebugReceives=1
# killall Finder && /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
{ 1 } ‘aevt’: aevt/rapp (i386){
return id: 2001 (0x7d1)
transaction id: 0 (0×0)
interaction level: 112 (0×70)
reply required: 0 (0×0)
remote: 0 (0×0)
for recording: 0 (0×0)
reply port: 47875 (0xbb03)
target:
{ 1 } ‘psn ‘: 8 bytes {
{ 0×0, 0×16016 } (Dock)
}
fEventSourcePSN: { 0×0,0×16016 } (Dock)
optional attributes:
{ 1 } ‘reco’: – 1 items {
key ‘optk’ –
{ 1 } ‘list’: – 1 elements {
{ 1 } ‘keyw’: 4 bytes {
‘frnt’
}
}
}
event data:
{ 1 } ‘aevt’: – 1 items {
key ‘frnt’ –
{ 1 } ‘bool’: 1 bytes {
false
}
}
}
{ 1 } ‘aevt’: aevt/rapp (i386){
return id: 2003 (0x7d3)
transaction id: 0 (0×0)
interaction level: 112 (0×70)
reply required: 0 (0×0)
remote: 0 (0×0)
for recording: 0 (0×0)
reply port: 47875 (0xbb03)
target:
{ 1 } ‘psn ‘: 8 bytes {
{ 0×0, 0×16016 } (Dock)
}
fEventSourcePSN: { 0×0,0×16016 } (Dock)
optional attributes:
{ 1 } ‘reco’: – 1 items {
key ‘optk’ –
{ 1 } ‘list’: – 1 elements {
{ 1 } ‘keyw’: 4 bytes {
‘frnt’
}
}
}
event data:
{ 1 } ‘aevt’: – 1 items {
key ‘frnt’ –
{ 1 } ‘bool’: 1 bytes {
false
}
}
}
Автор: Василий Колосов | 09/20/2011 в 21:30
Василий, в яблочко, но надо же и коллегам дать время поискать ответ.
Тогда еще вопрос – а если мы не хотим запускать Finder из Terminal. К примеру, нам нужно понять что происходит в момент входа в систему?
Автор: Кирилл Воронин | 09/20/2011 в 21:38
Можно создать файл ~/.MacOSX/environment.plist и добавить туда AEDebugSends и AEDebugReceives со значением 1. Результаты мониторить в Console.
http://developer.apple.com/library/mac/#qa/qa1067/_index.html
Автор: Андрей Раньков | 09/21/2011 в 13:51