顯示具有 fixme 標籤的文章。 顯示所有文章
顯示具有 fixme 標籤的文章。 顯示所有文章

2018年1月9日 星期二

[Debug] gdb


2018年1月8日 星期一

[ATSC3.0] DASH IF


2018年1月6日 星期六

[Embedded System] Portal


2017年11月25日 星期六

[Kernel] Linux kernel debug


  • 技巧
    • printk dump messages to console
      • 簡單好用, 行為類似 printf, 不過這會改變 kernel行為 (例如: 執行速度變慢, 使得 race condition 行為不一致)
      • 可同時更改 ring buffer size (更改 kernel boot parameter: log_buf_len), 避免 log的訊息被裁斷
      • 更改 log level, 預設為 KERN_WARNING, e.g. 開啟所有 log:
      • , 並刪除 boot parametersquiet, splash (runtime 查看 boot parameters: cat /proc/cmdline)
        echo 7 > /proc/sys/kernel/printk
    • gdb
      • disassemble function codes
        • gdb vmlinux
          (gdb) dissemble functionName
      • locate core dump:
        • gdb crashed_function_obj, e.g. gdb sd.o
        • (gdb) list *(backtrace_func_shown+offset), e.g. list *(sd_remove+0x20
    • 用 objdump
      • objdump -SdCg sample.o
    • ToDo: add2line 指令介紹, ELF 格式介紹, study Kernel Debugging
    • Reference

2017年7月15日 星期六

[Git] Portal


  • What is Git?
    • 分散式版本控制軟體
    • 利用 40 bytes的 hash key當作每次 commit ID
    • stages
    • 每次皆儲存完整內容, not diff
  • 名詞
    • hash
    • commit
    • repository (remote, local)
    • branch
    • HEAD
      • pointer to latest commit of current branch
    • Q: reference, rebase, cherry-pick?
    • parent -> 延伸至哪個 version
  • 行為
    • clone
    • checkout
    • commit
      • 修改 commit: 
        git commit --amend
    • push
    • pull
      • 從 remote 抓取各版 merge成新的 commit
    • fetch
      • 與 pull的差異是, 僅抓取 remote的 log, 不 merge
    • merge
      • fast forward (branch 合回 master, 且 master 未更改)
      • non-fast forward, merge into a new commit
      • rebase, branch的修改會串到 master 後面
        • Merge (From 連猴子都懂的 Git 入門指南)
          修改內容的歷史記錄會維持原狀,但是合併後的歷史紀錄會變得更複雜。
        • Rebase
          修改內容的歷史記錄會接在要合併的分支後面,合併後的歷史記錄會比較清楚簡單,但是,會比使用 merge 更容易發生衝突。
          • e.g. git checkout br3
          • git rebase master
          • 在 master 後面再串上 br3
    • stash
    • blame
      • 可以 line-by-line 秀出各 commiter
  • 教學
  • 設定
    • .gitignore
    • filemode
      • 常看到 git diff 只差在 old mode 100644 與 new mode 100755
      • 可以利用 git config core.filemode false 來隱藏這些錯誤
    • workspace config, user config, global config
  • 可搭配 Google 的 Tool repo 進階 checkout 多個 repository 對應的特定版號, 以 manifest做管理 (xml format), 或是 snapshot.xml 做管理