Как диагностировать сбой приложения из журнала ошибок OS X? - PullRequest
2 голосов
/ 29 сентября 2008

Short Q .: Что означает это исключение? «EXC_BAD_ACCESS (0x0001)»

Полный Q .: Как я могу использовать эту информацию журнала ошибок (и подробности потока, которые я здесь пропустил) для диагностики сбоя этого приложения? (Примечание: у меня нет опыта работы с журналами аварий или ядрами ОС.)

В этом случае мой почтовый клиент (Eudora) аварийно завершает работу сразу после запуска, каждый раз, когда нет видимых системных изменений.

Host Name:      [name of Mac]
Date/Time:      2008-09-28 14:46:54.177 -0400
OS Version:     10.4.11 (Build 8S165)
Report Version: 4
Command: Eudora
Path:    /Applications/[...]/Eudora Application Folder/Eudora.app/Contents/MacOS/Eudora
Parent:  WindowServer [59]
Version: 6.2.4 (6.2.4)
PID:    231
Thread: 0
Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x00000001

Ответы [ 2 ]

2 голосов
/ 29 сентября 2008

Просто чтобы завершить ответ Михаэля - анализ журнала аварий не является тем, что вы должны делать. Программисты eudora облажались (или люди, предоставляющие инструменты, которые программисты eudora используют для создания eudora). Лучшее, что вы можете сделать, - это скопировать и вставить все содержимое журнала сбоев в почтовый клиент (попробуйте MAIL, поскольку вы, похоже, прямо сейчас не можете использовать eudora, хахаха), и отправить его в eudora-support @ eudora.com вместе с кратким описанием того, что происходит. Их работа - выяснить, что пошло не так.

2 голосов
/ 29 сентября 2008

Чтобы ответить на ваш короткий вопрос: EXC_BAD_ACCESS означает недопустимый доступ к памяти. Это означает, что программа пыталась использовать область памяти вне своего виртуального адресного пространства (грубо говоря, область памяти, которую она запросила у ядра ОС). Это то, что люди Unix обычно называют «ошибкой сегментации» (segfault), и то, что люди Windows обычно называют «нарушением доступа» (AV) или «общей ошибкой защиты» (GPF). (Да, вы, наверное, уже знали это. Но я просто проверяю ...)

В отчете о сбое сказано, на какой адрес памяти ссылались? Включает ли отчет стек вызовов или дамп ядра? Все три очень полезны, особенно дамп ядра, поскольку вы можете загрузить его в отладчик и перезапустить программу прямо с точки исключения. И если адрес памяти кажется совершенно неработоспособным (в верхней половине виртуального адреса или очень близко к 0, тогда у вас есть хорошая подсказка, в чем заключается проблема).

...