1. 程式人生 > >系統技術非業餘研究 » trace機制新增exception_trace

系統技術非業餘研究 » trace機制新增exception_trace

我們在使用Erlang的時候,經常會發現exception被靜悄悄得忽略掉了,這點對於診斷問題非常的不友好。R14B04新新增exception_trace幫助使用者在異常的時候,得到異常得呼叫棧,就馬上可以解決問題。 這個功能主要面對高階使用者,文件裡面沒怎麼描述這個事情,主要的實現在erts的trace模組裡面,有興趣的同學可以自己看看。
我來演示下這個功能:

$ cat test.erl
-module(test).
-compile(export_all).
start(A)->
    spawn(fun ()-> demo(A) end).
demo(A) ->
    1 + A.

$ erlc test.erl
$ erl
Erlang R14B04 (erts-5.8.5)  [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
1> test:start().
** exception error: undefined function test:start/0
2> test:start(1).
<0.35.0>
3> test:start(x).
<0.37.0>
4> 
=ERROR REPORT==== 21-Oct-2011::11:36:52 ===
Error in process <0.37.0> with exit value: {badarith,[{test,demo,1}]}


4> dbg:tracer(),dbg:p(all,),dbg:tpl(test,[{'_',[],[{exception_trace}]}]).
{ok,[{matched,
[email protected]
,5},{saved,x}]} 5> test:start(x). (<0.33.0>) call test:start(x) (<0.33.0>) returned from test:start/1 -> <0.42.0> =ERROR REPORT==== 21-Oct-2011::11:38:00 === Error in process <0.42.0> with exit value: {badarith,[{test,demo,1}]} (<0.42.0>) call test:'-start/1-fun-0-'(x) (<0.42.0>) call test:demo(x) (<0.42.0>) exception_from {test,demo,1} {error,badarith} (<0.42.0>) exception_from {test,'-start/1-fun-0-',1} {error,badarith} <0.42.0> 6>

祝玩得開心!

Post Footer automatically generated by wp-posturl plugin for wordpress.

相關推薦

系統技術業餘研究 » trace機制新增exception_trace

我們在使用Erlang的時候,經常會發現exception被靜悄悄得忽略掉了,這點對於診斷問題非常的不友好。R14B04新新增exception_trace幫助使用者在異常的時候,得到異常得呼叫棧,就馬上可以解決問題。 這個功能主要面對高階使用者,文件裡面沒怎麼描述這個事情,主要的實現在erts的

系統技術業餘研究 » Erlang新新增選項 +zerts_de_busy_limit 控制節點間通訊的資料量

erlang節點間通訊預設是通過tcp通道進行的, 而且每對節點間只有一個tcp連結,所有的rpc和內建的類似monitor這樣的訊息也都是通過這個通道進行的. 當資料量過大的時候, 系統就會發出 busy distribution port警告, 同時限制資料的吞吐. 這個值預設是128k. 現

系統技術業餘研究 » Flashcache新新增驅逐空閒髒頁引數

我在之前的博文提過Flashcache的cache是以set為單位管理的,每個set預設2M。 當單個set裡面的髒頁數量超過dirty_thresh_pct的時候,就會啟動背景工作佇列來把超過設定的髒頁回寫到後備磁碟去。 這裡有別的同學對flashcache設計文件的翻譯. 參看dirty_th

系統技術業餘研究 » 從FTP模組學習先進的診斷技術(Erlang Trace機制)

我們開發好了一個軟體的時候,通常是經過嚴格測試的,才分發給使用者使用, 但是即使這樣也不能保證使用者的環境和我們的相同, 我們的軟體還是會失敗的. 問題是如何診斷這些問題. 通常的做法是寫log,這是個很有效的方式. 但是寫log要程式碼支援,而且會帶來負面的效能影響. Erlang提供了強大的T

系統技術業餘研究 » 未公開的erlang ports trace

erlang的trace機制非常強大, 在dbg, ttb模組的配合下, 可以非常清楚的瞭解系統的運作, 排錯, 和調優. 但是有個對於做網路程式重要的功能被忽視了, 沒有寫到文件. 那就是trace ports訊息. 我們的gen_tcp,file都是port實現的, 那麼瞭解這麼模組的運作其實

系統技術業餘研究 » R14A新增新指令優化Ref訊息的接收

Erlang的慣用法之一就是在訊息匹配的時候,如果需要唯一性,通常會通過make_ref搞個唯一的Ref來作為訊息的一部分來匹配。這個慣用法用在gen_server:call或者demonitor這樣的使用頻度很高的函式裡面。由於erlang的訊息匹配是再訊息佇列裡面挨個遍歷來匹配,特別是訊息佇列

系統技術業餘研究 » ftrace和它的前端工具trace

最近在調查lockless的ring_buffer的時候,發現了ftrace. ftrace是 Linux 核心中提供的一種除錯工具。使用 ftrace 可以對核心中發生的事情進行跟蹤,這在除錯 bug 或者分析核心時非常有用. ftrace在2.6.28-rc2以後的Linux核心都支援

系統技術業餘研究 » Erlang叢集自動化新增節點指南

Erlang的叢集是由各個節點組成的,一個節點有一個名字來標識,而不管這個節點在網路的物理位置,所以在部署Erlang叢集的時候就很方便。只要在叢集裡新啟動一個節點,給個相對固定的引導的節點,讓新節點和這個引導節點取得聯絡,由引導節點把新節點介紹入叢集就OK了。 在實踐中,新採購的機器上通常配置好

系統技術業餘研究

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » MySQL資料庫架構的演化觀察

MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql

系統技術業餘研究 » inet_dist_connect_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 推薦工作機會

最後更新時間:2014/11/28 請賜簡歷至:[email protected], 感謝您對加入我們公司有興趣,我們希望能早日和您共事。 以下幾個職位1年內有效,歡迎內部轉崗:
 資深資料工程師 公司:阿里(核心系統資料庫組) 工作地點:杭州(西溪園區) 崗位描述: 分析雲服務產生的海

系統技術業餘研究 » 新的工作和研究方向

和大家更新下: 做了將近8年資料庫後,我的工作和研究方向將會延伸到虛擬化和計算相關的雲服務,希望能夠和大家一起進步,Happy New Year! 預祝大家玩得開心! Post Footer automatically generated by wp-posturl plugin for w

系統技術業餘研究 » 叢集引入inet_dist_{listen,connect}_options更精細引數微調

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 2017升的最快的幾個資料庫無責任點評

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » Erlang 17.5引入+hpds命令列控制程序預設字典大小

Erlang 17.5釋出引入控制程序預設字典大小的命令列引數: Erlang/OTP 17.5 has been released Written by Henrik, 01 Apr 2015 Some highlights of the release are: ERTS: Added co

系統技術業餘研究 » inet_dist_listen_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 老生常談: ulimit問題及其影響

ulimit最初設計是用來限制程序對資源的使用情況的,因為早期的系統系統資源包括記憶體,CPU都是非常有限的,系統要保持公平,就要限制大家的使用,以達到一個相對公平的環境。以下是典型的機器預設的限制情況: $ ulimit -a core file size (blocks,

系統技術業餘研究 » 求賢帖

原創文章,轉載請註明: 轉載自系統技術非業餘研究 本文連結地址: 求賢帖 作為一個優秀的工程師,你其實不缺少才華,你缺少的是神一樣的隊友、充滿挑戰的世界級技術難題,和一個可以施展自己才華的大舞臺。加入阿里核心系統資料庫開發團隊吧,你缺的這裡都有。來吧,戳這裡,給我們見識你的機會:http://b

系統技術業餘研究 » Erlang R16B03釋出,R17已發力

Erlang R16B03釋出了,通常03版本是bug fix版本,進入生產版本,官方的說明如下: OTP R16B03 is a service release with mostly a number of small corrections and user contributions. B