2017-10-13 86 views
1

有很多頁面解釋它,但我找不到它。我發現的許多文章只適用於El Capitan和舊系統。Sierra上的kprintf(kernel printf)登錄在哪裏?

我現在無法使用fwkpfv,因爲我沒有正確的加密狗。我的客戶正在爲我購買一臺支持Firewire的舊MacBook。

我的內核擴展讓我的盒子驚慌失措。很奇怪,如果我的同事建立我的擴展,它的工作就好了。我仍然fl。不樂。

回答

1

你可以使用命令

log stream --process 0 

「活」本地內核日誌對於希望在過去的日誌,使用log show代替,例如:

log show --predicate 'processID == 0' --last 1h | less 

的是沒有人會幫助你同但是,由於日誌記錄是在用戶空間異步發生的,所以在恐慌之前你不會得到最後的消息。

  • 基於以太網的內核調試(而不是火線):用於調試KPS沒有火線,你很可能已經知道,但我會提到它們只是爲了完整起見

    一些更多的選擇。只有測試設備需要有線/雷電以太網,運行調試器的Mac可以在WiFi上。

  • 您通常可以從恐慌日誌本身中提取大量信息:除了對堆棧進行符號化(使用keepsyms=1 boot-arg,因此您不必追溯),查看寄存器內容和反彙編可以經常告訴你變量的值。
  • 如果你缺少部分Apple代碼堆棧跟蹤,請運行調試或開發內核而不是發行版本。這些內置啓用的優化次數較少,因此函數不太可能內聯,等等。
  • 有一堆內存調試和其他診斷選項可以在內核中打開,例如, -zp,-zc等。
  • 如果您可以在虛擬機(VMWare Fusion,Parallels,VirtualBox,KVM/Qemu等)中重現崩潰,則可以使用虛擬機的模擬串行端口記錄kprintf輸出。如果您將它們設置正確,虛擬以太網端口也傾向於支持內核調試。
+0

謝謝!對不起,我花了這麼長時間來接受你的答案。 –

相關問題