iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
自我挑戰組

Eric 的創作者重生計畫系列 第 8

DAY 8. Vibe Coding 記錄—Vivaldi 錯誤回報教學

  • 分享至 

  • xImage
  •  

✌️今天要去看Ave Mujica
好開心😍
先發文吧


Vibe Coding 記錄

由於我使用Mac,以此為例,根據官方提供的方法,以及Gemini的幫助下寫出自動化腳本

官方指令教學

find ~/Library/Application\\ Support/Vivaldi/Crashpad -newer /Applications/Vivaldi.app -name \\\*.dmp | zip -j ~/Documents/Vivaldi\\ Crash\\ Logs\\ $(date '+%Y%m%d-%H%M') -@

這行指令是一個功能非常強大的 Unix 管道(Pipeline)組合 ,主要目的是: 自動找出 Vivaldi 瀏覽器最新產生的當機記錄檔(Crash Logs),並將它們壓縮打包到你的「文件」資料夾中 ,方便你提供給開發團隊分析。

我們把它拆解成兩個核心部分來詳細教學:

  1. find ...:負責「搜尋」符合特定條件的檔案。
  2. | zip ...:將搜尋到的檔案清單「傳送」並「壓縮」起來。

🛠️ 第一部分:精準搜尋 (find)

find ~/Library/Application\ Support/Vivaldi/Crashpad -newer /Applications/Vivaldi.app -name \*.dmp
  • find
    • 作用 :Linux/macOS 的檔案搜尋工具。
  • ~/Library/Application\ Support/Vivaldi/Crashpad
    • 作用 :指定搜尋的 起始路徑
      • 細節~ 代表你的使用者主目錄。因為 Application Support 中間有空格,所以使用了反斜線 \ 進行轉義(Escape),讓系統知道這是一整個完整夾名。這裡正是 Vivaldi 存放當機回報(Crashpad)的資料夾。
  • -newer /Applications/Vivaldi.app
    • 作用 :時間篩選條件。
      • 細節 :這是一個非常聰明的用法!它代表「只尋找比 Vivaldi 主程式還要新」的檔案。通常這意味著是在你最近一次更新或安裝 Vivaldi 之後才發生的當機記錄,幫你過濾掉很久以前的舊資料。
  • -name \*.dmp
    • 作用 :檔名篩選條件。
      • 細節 :只尋找副檔名為 .dmp (Dump 檔,即當機記憶體傾印檔案)的檔案。星號前面的反斜線 \* 是為了防止終端機提早把星號展開,確保這個條件能正確傳給 find 指令。

🔀 核心橋樑:管道符號 (|)

  • | (Pipe)
    • 作用 :將前一個指令( find )輸出的「檔案路徑清單」,直接變成下一個指令( zip )的輸入源。就像接水管一樣,資料源源不絕地送過去。

📦 第二部分:動態命名與壓縮 (zip)

zip -j ~/Documents/Vivaldi\ Crash\ Logs\ $(date '+%Y%m%d-%H%M') -@
  • zip
    • 作用 :壓縮檔製作工具。
  • -j (Junk paths)
    • 作用「丟棄原始目錄結構」
      • 細節 :非常重要!如果不加 -j ,壓縮檔打開後會有一層層深厚的資料夾(如 Library/Application Support/...)。加上 -j 後,所有被找到的 .dmp 檔案都會被扁平化(Flat)地直接放在壓縮檔的根目錄,乾淨俐落。
  • ~/Documents/Vivaldi\ Crash\ Logs\ $(date '+%Y%m%d-%H%M')
    • 作用 :設定輸出的壓縮檔路徑與檔名。
      • 細節
      • 儲存在你的「文件(Documents)」資料夾。
        - 檔名開頭為 Vivaldi Crash Logs (空格同樣用 \ 轉義)。
        - $(date '+%Y%m%d-%H%M') 是一個動態變數,系統執行時會自動抓取當前時間(例如 2026 年 7 月 17 日下午 3 點 43 分,就會變成 20260717-1543 )。因此每次執行的檔名都會是獨一無二的,不會覆蓋舊檔。
  • -@
    • 作用「從標準輸入讀取檔案清單」
      • 細節 :這是配合前面管道符號( | )的關鍵參數。它告訴 zip 指令:「請去讀取前面 find 吐給你的那串檔案路徑,並把它們通通打包起來。」

💡 總結流程

  1. 系統前往 Vivaldi 的當機資料夾。
  2. 找出「比 Vivaldi 軟體本體更新」 「副檔名是.dmp」的檔案。
  3. 把這些檔案名單丟給壓縮程式。
  4. 壓縮程式剝離它們的資料夾外殼( -j ),將它們打包成一個帶有 當前時間戳記.zip 檔,並存放在你的「文件」資料夾中。

自動運行的 Shell 腳本

Step 1:創建與編寫腳本

打開 Mac 自帶的終端機或是其他習慣的終端機程式(iterm2、ghostty等) ,輸入以下指令來創建並編輯腳本檔案儲存並退出
打開nano並再Documents創建名為backup_vivaldi_crashes.sh的腳本(或是自己習慣的編輯器、路徑、檔名)

nano ~/Documents/backup_vivaldi_crashes.sh
#!/bin/bash

# 定義目標與輸出路徑
CRASH_DIR="$HOME/Library/Application Support/Vivaldi/Crashpad"
APP_PATH="/Applications/Vivaldi.app"
OUTPUT_DIR="$HOME/Documents"
TIMESTAMP=$(date '+%Y%m%d-%H%M')
ZIP_FILE="$OUTPUT_DIR/Vivaldi Crash Logs $TIMESTAMP.zip"

echo "🔍 正在檢查是否有最新的 Vivaldi 當機記錄..."

# 檢查 Vivaldi 主程式是否存在
if [ ! -d "$APP_PATH" ]; then
    echo "❌ 找不到 Vivaldi.app,請確認應用程式安裝路徑。"
    exit 1
fi

# 執行搜尋與壓縮
# 使用引號包裹變數,避免路徑中的空格導致解析錯誤
find "$CRASH_DIR" -newer "$APP_PATH" -name \*.dmp 2>/dev/null | zip -j "$ZIP_FILE" -@

# 檢查壓縮結果
if [ $? -eq 0 ] && [ -f "$ZIP_FILE" ]; then
    echo "🎉 打包成功!"
    echo "📦 檔案已儲存至:$ZIP_FILE"
else
    echo "⚠️ 未找到比 Vivaldi.app 更新的當機記錄 (.dmp),或打包過程中發生錯誤。"
    # 如果產生了空的 zip 檔,將其移除
    [ -f "$ZIP_FILE" ] && rm "$ZIP_FILE"
fi

Step 2:賦予執行權限

剛創建好的 .sh 檔案在 Mac 上預設是沒有執行權限的。請在終端機輸入以下指令,為該腳本加上執行權限( +x ):

chmod +x ~/Documents/backup_vivaldi_crashes.sh

Step 3:如何運行它?

以後每當 Vivaldi 發生當機,你只需要打開終端機,輸入以下指令即可一鍵執行:

~/Documents/backup_vivaldi_crashes.sh

💡 小撇步: 你也可以直接打開 Finder,進入「文件」資料夾,將 backup_vivaldi_crashes.sh 拖入終端機視窗中,然後按下 Enter 運行!

⚡ 快速設定三步驟複習:

  1. 建立檔案 :在終端機輸入 nano ~/Documents/backup_vivaldi_crashes.sh ,貼上上方程式碼,按 Ctrl+O 再按 Enter 儲存,最後按 Ctrl+X 離開。
  2. 賦予權限 :在終端機輸入 chmod +x ~/Documents/backup_vivaldi_crashes.sh
  3. 執行腳本 :在終端機輸入 ~/Documents/backup_vivaldi_crashes.sh 即可運行。

上一篇
DAY 7. ⏰上網習慣追蹤—藉由 Vivaldi 歷史記錄與擴充功能🎻
下一篇
DAY 9. 打開天窗說亮話:我的 Vivaldi 瀏覽記錄解析🎻
系列文
Eric 的創作者重生計畫14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言