Jayce 的共享記憶體

Linux Kernel BUG_ON 傾印訊息分析及案例分享

By Lin Chieh (Jayce) |  Dec 4, 2019  | Linux Kernel

  前一陣子有追蹤一個 ARM 平台發生 Kernel BUG_ON 的問題,在同事的協助下花了一點時間終於追出可能的原因。在我剛開始接觸 Linux Kernel 時,遇到這類 log 都很不知道該如何下手,累積了一些經驗以後才慢慢知道該如何切入、分析及找出原因。

  這篇會分享實際分析 Kernel Oops log 的過程,以及相關工具的使用方式做為案例分析給各位參考。

繼續閱讀

[C++] 幾種在函數傳遞 Smart Pointer 的方式整理

By Lin Chieh (Jayce) |  Nov 3, 2019  | C/C++

  相較於其他程式語言,C++ 的函數參數傳遞方式有很多種方法,如傳值(value)、傳址(address/pointer),及傳參考(reference)等,再加上 const 修飾詞後又有不同的變化。

  C++11 引入的 unique_ptr 及 shared_ptr 等智慧指標,也同樣有傳值或傳參考等方式。雖然很多手段都可以達到相同目的,但如果透過傳遞方式的不同,就可以表現出函數設計者想傳達的「語意」,那一定會是比較好的設計,同時好的設計也能借助編譯器的輔助來降低程式出錯的機會。

  針對各種不同需求及使用情境,這篇整理我蒐集到的建議實作方式,主要源自於 C++ Core Guideline,提供給各位參考。

繼續閱讀

從 Jekyll 遷移到 Hugo 步驟心得分享

By Lin Chieh (Jayce) |  Oct 23, 2019  | 網站架設

  部落格從去年一月至今也快滿兩年了,中間一直有想修改部落格的樣板,經過一陣選擇與研究以後,決定連產生器也換掉試試看,於是就轉到了 Hugo。Hugo 是一個以 golang 為基礎開發的靜態網站產生器,他的建置速度很快,目前感覺他的操作指令以及目錄規劃也蠻乾淨好上手。這篇就筆記一下我從 jekyll 轉換到 hugo 的過程及一些重點。

繼續閱讀

Visual Studio Code Remote - WSL 安裝教學

By Lin Chieh (Jayce) |  Jul 13, 2019  | 開發環境

  最近在思考如何讓我的插件能夠跑在 WSL 裡面,後來發現了 Visual Studio Code Remote - WSL 這個好東西,它可以讓 VS Code Server 實際執行在 WSL 裡面,只留 UI 介面在 Windows。

  這對某些插件非常有用,因為有些東西跑在 Linux 環境是比較容易的。另外 Visual Studio Code Remote 系列還包含 Remote - SSH 模式,這東西就更猛了,如果你的 Build Machine 是遠端的 Linux Server ,他可以直接透過 SSH 跑在 Linux Server 端,像是檔案搜尋等動作,直接執行在遠端 Linux 就會比透過 Samba 或 NFS 快上很多。

繼續閱讀

VS Code GNU Global 相依專案路徑設定

By Lin Chieh (Jayce) |  Jul 13, 2019  | 開發環境, c/c++

  在 VS Code + GNU Global - 打造 Trace Linux Kernel 環境 這篇我有介紹我改造的 VS Code GNU Global 套件。當初會選擇 GNU Global 作為主要的 tagging engine,除了他的速度很快以外,還有另一個的原因是 GNU Global 具備將 tag files 分散在不同 Project 的功能,再透過相依性設定搜尋路徑。

  分散 Tag File 在某些大型專案非常有用,他可以有效加速 Tag 搜尋和更新的速度。另外他也支援將 tag files 放在專案目錄以外的地方,以下會分別介紹這兩個功能在 VS Code 中要如何設定。

繼續閱讀