
tracethat.dev
Kacper Pietrzak · 程式設計
tracethat.dev 是一款強調免設定除錯的遠端除錯工具:你把 JavaScript、Python 或 Go 的函式包起來,它就會把函式的參數、回傳值、執行時間與錯誤,即時串流到一個支援即時除錯介面的平台上。

關於 tracethat.dev
About
tracethat.dev 是什麼
tracethat.dev 是 Kacper Pietrzak 打造的開源遠端除錯工具,寫給那些受夠在程式碼各處散落 print 的開發者。你不需要印出一大串紀錄、再慢慢捲動無關的輸出,只要把函式包起來,工具就會自己蒐集有用的細節。它鎖定的對象,是團隊與獨立開發者,用來除錯那些沒辦法輕鬆接上傳統除錯器的程式,例如跑在遠端伺服器、容器或背景工作裡的程式。
背後的想法很單純。用 print 除錯,等於你得事先決定要記錄什麼,而且每次猜錯就得重跑一次程式。tracethat.dev 把這件事反過來做。reporter 會捕捉參數、回傳值、執行時間、呼叫堆疊,以及任何被拋出的例外,通常跑一次就足以找出問題。
代價是適用的範圍。受限於 Go 的型別系統運作方式,Go 的 reporter 沒辦法包住任意函式,因此 Go 使用者得手動記錄事件。事件只會在伺服器上留存一段時間,所以它不是長期保存紀錄的歸檔工具。而且你還是得自己把 reporter 加進程式碼。
開始使用
- 前往 tracethat.dev 並開一個新的工作階段。網站會產生一組權杖,同時當作你的房間識別碼與加密金鑰。
- 安裝對應語言的 reporter:
npm install tracethat.dev、pip install tracethat,或go get github.com/pietrzakacper/tracethat.dev/reporters/golang/tt。 - 用
registerToken("你的權杖")(JavaScript)或register_token('你的權杖')(Python)在你的應用程式裡註冊權杖。 - 把想觀察的函式包起來,或用
tracethat.log記錄單一事件,接著執行程式。 - 看著事件即時串進瀏覽器,展開、收合或篩選,把焦點放在真正重要的地方。
產品資訊
快速了解 tracethat.dev 的定價、支援平台與效能。
適合對象
這項工具最適合的使用者、任務與情境。
使用者
- 後端開發者:當你需要在遠端伺服器或容器裡檢查某個函式、而接上一般除錯器又很麻煩時,這款工具派得上用場;前提是你得把 reporter 加進程式碼。
- JavaScript 與 TypeScript 開發者:npm 的 reporter 用一行呼叫就能包住任何函式,很適合講求快速交付的腳本專案;在 Node.js 與瀏覽器程式碼上表現最好。
- Python 開發者:裝飾器語法(`@tracethat`)能套用在非同步與一般函式上,額外負擔很小;需要 Python 3 以及安裝 `tracethat` 套件。
任務
- 除錯一個在本機重現不了的函式:reporter 會從實際的執行中捕捉真實的參數與回傳值,你看到的是真正發生的事,而不是憑空猜測。
- 量測緩慢的程式路徑:每個被包住的呼叫都會回報自己的執行時間,很容易就能找出拖慢整體的那個函式。
- 抓出無聲的例外:被拋出的錯誤會以事件的形式出現在引發它的呼叫旁邊,失敗不會就此消失在紀錄裡。
情境
- 測試伺服器上的背景工作拋出一個你在筆電上重現不了的錯誤;把出錯的那個步驟包起來,真實的輸入就會直接送到你的瀏覽器。
- 某個網頁應用只在正式環境出問題;用 `script` 標籤的 reporter 直接放進你的 HTML,不必經過建置流程就能開始串流。
- 你正在與人一起除錯,或向同事求助;把工作階段權杖分享出去,兩個人就能同時看同一條即時串流。
主要功能
一行完成函式追蹤
reporter 的核心動作,就是把函式包起來,讓每次呼叫都被記錄成一筆函式追蹤事件。對 JavaScript 開發者來說,它同時是你手上那個 JavaScript 除錯器;對 Python 使用者而言,則等於一個能深入執行中的 Python 除錯器。在 JavaScript 裡你寫下 traceThat(hello)("world"),工具就會抓取參數、回傳值、這次呼叫花了多久、呼叫堆疊,以及任何被拋出的例外。Python 用 @tracethat 裝飾器實踐同一個想法。這些你都不必寫任何一行 print 就能拿到。
即時串流的網頁介面
事件不會等你手動重新整理。網頁端與伺服器之間維持一條 socket,每筆新事件一發生就推進你的房間。你可以展開某次呼叫查看完整細節,把不在意的事件收合起來,並依特定數值篩選。它的設計是讓你讀一份聚焦的事件清單,而不是翻找一大串捲動緩衝區。
以權杖為基礎的加密
你的權杖身兼兩職,既是房間識別碼,也是加密金鑰。reporter 會在事件離開你的應用程式之前先加密,網頁端唯有拿到同一組權杖才能解密。房間是以權杖的 SHA-256 雜湊值來識別,所以伺服器只會把你這段工作階段該收到的事件送過來。
多語言 reporter
目前有 JavaScript/TypeScript、Python 與 Go 的 reporter。JS 版從 npm 安裝,也能直接用 script 標籤執行,在沒有建置流程時很方便。Python 版從 PyPI 安裝。Go 版直接從 GitHub 安裝。它們都連向同一台伺服器與同一個介面,所以混用技術棧的專案,事件還是會集中在一處。
手動記錄事件
當你不想包住整個函式,可以在單一個點放上標記。tracethat.log('hello function started') 會記錄一筆事件,你還可以附帶額外資料。這對 Go 來說是首選做法,因為它的 reporter 沒辦法通用地包住函式;對只想在兩行之間放個檢查點的人也合用。
記憶體內伺服器與自動清理
伺服器把事件留在記憶體裡,而不是寫進持久化儲存,過一段時間就清掉。這讓設定維持輕量,也不會留下還要管理的紀錄。這同時也意味著,事件是為了即時除錯而存在,不是用來回顧上週發生了什麼。
優缺點
優點
- 除了加進 reporter,沒有其他設定:你不必配置代理程式、收集器或儲存後端。
- 捕捉到的資料比 `print` 更廣,一次就能涵蓋參數、回傳值、執行時間、呼叫堆疊與例外。
- 介面支援即時顯示、篩選與展開/收合,讀起來遠比原始紀錄輕鬆。
- 以 MIT 授權開源,你可以閱讀原始碼、自行架設或參與貢獻。
- 橫跨 JavaScript、Python 與 Go,適合後端技術棧混雜的團隊。
缺點
- Go 的 reporter 沒辦法包住任意函式,Go 使用者得手動記錄事件,比起 JS 或 Python 要花更多手動工夫。
- 事件保存在記憶體裡,過一段時間就被清掉,因此不能當成可長期保存、供事後檢討的紀錄。
- 你仍然得改動原始碼才能加進 reporter,對於無法編輯的應用程式來說並非零接觸。
- 這是一個由單一維護者經營的小專案,使用者基數不大,社群支援比大型商業平台單薄,邊緣情況可能得自己解決。
常見問題
它是一款遠端除錯工具,用來觀察正在執行的應用程式實際做了什麼。你把函式包起來,工具會把參數、回傳值、執行時間與錯誤串流到瀏覽器介面,讓你除錯那些用一般除錯器難以觸及的程式碼。
相關內容
探索與 tracethat.dev 相關的工具、技能與文章。
tracethat.dev 替代方案
Forefront
Forefront · 程式設計Forefront 是一個用來打造開源 AI 的網頁平台。你可以用自己的資料微調主流的開源語言模型、評估它們的表現,再透過 API 執行,或匯出後自行架設。想要封閉式平台的便利、卻堅持要自己擁有模型與資料的開發者,就是這裡的目標客群。
Startkit
StartKit.AI · 程式設計Startkit 是一套用來打造 AI SaaS 與 AI 包裝產品的樣板。可以把它想成一個 AI 新創樣板,把枯燥的部分都先接好了:驗證、Stripe 與 Lemon Squeezy 付款、用量限制、交易型電子郵件,以及一套能與 OpenAI、Anthropic、Groq 或 Llama 溝通的 AI API 啟動套件。你複製儲存庫、設定價格,然後專心在產品中使用者真正願意付費的部分。它建構於 React 與 Tailwind 之上的 Next.js,所以大部分的樣板程式碼對你來說並不陌生。
Testim
Tricentis · 程式設計Testim 是專為網頁、行動與 Salesforce 應用程式打造的 AI 測試自動化平台,用來建立並執行端到端測試。它靠機器學習在介面變動時維持測試穩定,團隊因此少花時間修補壞掉的定位器。對於一款今天就能開始使用的自動化測試工具來說,這表現不算差。你透過在瀏覽器錄製動作來建立測試,需要更多控制時再補上 JavaScript。對忙碌的 QA 團隊來說,這是個可靠的選擇。
