我有一個多線程的應用程序,它在我的所有測試機器上都非常穩定,似乎對我的幾乎每個用戶都是穩定的(基於沒有崩潰的抱怨)。但是,該應用程序經常爲一個用戶崩潰,但是,這位用戶非常友好,可以發送崩潰報告。所有崩潰報告(〜10個連續報道)外觀基本相同:調試斷點是否導致「EXC_BREAKPOINT(SIGTRAP)」異常?
Date/Time: 2010-04-06 11:44:56.106 -0700
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 com.apple.CoreFoundation 0x90ab98d4 __CFBasicHashRehash + 3348
1 com.apple.CoreFoundation 0x90adf610 CFBasicHashRemoveValue + 1264
2 com.apple.CoreText 0x94e0069c TCFMutableSet::Intersect(__CFSet const*) const + 126
3 com.apple.CoreText 0x94dfe465 TDescriptorSource::CopyMandatoryMatchableRequest(__CFDictionary const*, __CFSet const*) + 115
4 com.apple.CoreText 0x94dfdda6 TDescriptorSource::CopyDescriptorsForRequest(__CFDictionary const*, __CFSet const*, long (*)(void const*, void const*, void*), void*, unsigned long) const + 40
5 com.apple.CoreText 0x94e00377 TDescriptor::CreateMatchingDescriptors(__CFSet const*, unsigned long) const + 135
6 com.apple.AppKit 0x961f5952 __NSFontFactoryWithName + 904
7 com.apple.AppKit 0x961f54f0 +[NSFont fontWithName:size:] + 39
(....更多全文如下)
首先,我花了很長時間研究[NSFont fontWithName:大小:]。我想,也許用戶的字體被搞亂了,所以[NSFont fontWithName:size:]請求的東西不存在,並因此失敗。我使用[[NSFontManager sharedFontManager] availableFontNamesWithTraits:NSItalicFontMask]添加了一堆代碼,以提前檢查字體可用性。可悲的是,這些變化並沒有解決問題。
我現在已經注意到,我忘了刪除一些調試斷點,包括_NSLockError,[NSException raise]和objc_exception_throw。但是,該應用程序絕對是使用「發佈」作爲活動構建配置構建的。我假定使用「Release」配置可以防止設置任何斷點 - 但是我不能確定斷點究竟是如何工作的,或者是否需要從gdb中運行程序以使斷點產生任何效果。
我的問題是:我可以離開設置的斷點是用戶觀察到的崩潰的原因嗎?如果是這樣,爲什麼斷點只會爲這個用戶造成問題?如果沒有,還有其他人有與[NSFont fontWithName:size:]類似的問題?
我可能會嘗試刪除斷點併發送回用戶,但我不確定該用戶剩下多少貨幣。我希望更普遍地理解是否留下設置的斷點可能會導致問題(當應用程序使用「釋放」配置構建時)。
哇,謝謝你的全面答案。 •「你的意思是你設置了這些功能的斷點......」 是的,這就是我的意思。 「 •」斷點不是構建的一部分......它們只存在,只能被擊中,並且只能在調試器下運行程序時停止程序「 謝謝,這正是我想知道的。 •「象徵性的崩潰日誌...我爲此寫了一個應用程序」 好的應用程序。我通常憑藉純粹的直覺「象徵」 - 但你的應用程序是更好的方式! •我已經得出結論,這必須與用戶的字體有關的某種問題,並從該角度來處理它。 – Dennis 2010-04-11 00:22:06
符號符號+1。 – 2012-03-09 10:09:51