tracethat.dev

tracethat.dev

Kacper Pietrzak · 程式設計

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

tracethat.dev 的介面預覽

關於 tracethat.dev

About

tracethat.dev 是什麼

tracethat.dev 是 Kacper Pietrzak 打造的開源遠端除錯工具,寫給那些受夠在程式碼各處散落 print 的開發者。你不需要印出一大串紀錄、再慢慢捲動無關的輸出,只要把函式包起來,工具就會自己蒐集有用的細節。它鎖定的對象,是團隊與獨立開發者,用來除錯那些沒辦法輕鬆接上傳統除錯器的程式,例如跑在遠端伺服器、容器或背景工作裡的程式。

背後的想法很單純。用 print 除錯,等於你得事先決定要記錄什麼,而且每次猜錯就得重跑一次程式。tracethat.dev 把這件事反過來做。reporter 會捕捉參數、回傳值、執行時間、呼叫堆疊,以及任何被拋出的例外,通常跑一次就足以找出問題。

代價是適用的範圍。受限於 Go 的型別系統運作方式,Go 的 reporter 沒辦法包住任意函式,因此 Go 使用者得手動記錄事件。事件只會在伺服器上留存一段時間,所以它不是長期保存紀錄的歸檔工具。而且你還是得自己把 reporter 加進程式碼。

開始使用

  1. 前往 tracethat.dev 並開一個新的工作階段。網站會產生一組權杖,同時當作你的房間識別碼與加密金鑰。
  2. 安裝對應語言的 reporter:npm install tracethat.dev、pip install tracethat,或 go get github.com/pietrzakacper/tracethat.dev/reporters/golang/tt。
  3. 用 registerToken("你的權杖")(JavaScript)或 register_token('你的權杖')(Python)在你的應用程式裡註冊權杖。
  4. 把想觀察的函式包起來,或用 tracethat.log 記錄單一事件,接著執行程式。
  5. 看著事件即時串進瀏覽器,展開、收合或篩選,把焦點放在真正重要的地方。

產品資訊

快速了解 tracethat.dev 的定價、支援平台與效能。

免費方案是
付費方案Free
平台Web, JavaScript/TypeScript, Python, Go
開發者Kacper Pietrzak
類別程式設計
發布日期Dec 2023
最近更新Jan 2025
網站訪問量N/A
網站全球排名N/A
API 提供狀態N/A

適合對象

這項工具最適合的使用者、任務與情境。

使用者

  • 後端開發者:當你需要在遠端伺服器或容器裡檢查某個函式、而接上一般除錯器又很麻煩時,這款工具派得上用場;前提是你得把 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 · 程式設計

Forefront 是一個用來打造開源 AI 的網頁平台。你可以用自己的資料微調主流的開源語言模型、評估它們的表現,再透過 API 執行,或匯出後自行架設。想要封閉式平台的便利、卻堅持要自己擁有模型與資料的開發者,就是這裡的目標客群。

免費 / $0 - $99/mo查看詳情
Startkit

Startkit

StartKit.AI · 程式設計

Startkit 是一套用來打造 AI SaaS 與 AI 包裝產品的樣板。可以把它想成一個 AI 新創樣板,把枯燥的部分都先接好了:驗證、Stripe 與 Lemon Squeezy 付款、用量限制、交易型電子郵件,以及一套能與 OpenAI、Anthropic、Groq 或 Llama 溝通的 AI API 啟動套件。你複製儲存庫、設定價格,然後專心在產品中使用者真正願意付費的部分。它建構於 React 與 Tailwind 之上的 Next.js,所以大部分的樣板程式碼對你來說並不陌生。

付費 / $99 - $499 one-time查看詳情
Testim

Testim

Tricentis · 程式設計

Testim 是專為網頁、行動與 Salesforce 應用程式打造的 AI 測試自動化平台,用來建立並執行端到端測試。它靠機器學習在介面變動時維持測試穩定,團隊因此少花時間修補壞掉的定位器。對於一款今天就能開始使用的自動化測試工具來說,這表現不算差。你透過在瀏覽器錄製動作來建立測試,需要更多控制時再補上 JavaScript。對忙碌的 QA 團隊來說,這是個可靠的選擇。

免費 / Custom pricing on request查看詳情