2013-02-07 89 views
0

您好我想提高我的數學函數庫,delegatin斷言

當我計算的東西lenght我做

assert(!equal(len,0.0)); 
const f32 invsqrt = 1.0/sqrt(len); 
X*= invsqrt; 
Y*= invsqrt; 
Z*= invsqrt; 

這段代碼是很好,如果我被零做錯誤的劃分代碼打破

「運行時已要求在行把應用程序.. Vector.h線88」

這是不錯,但我想做得更好,我想說明其中的錯誤是真的。

因此,而不是顯示「vector.h」和第88行我想顯示「main.cpp」「第15行」(如果getLength函數在主要行15中調用)。

向量只是標題,所以我認爲實現這是可能的(這只是一種感覺)..但如何?

在此先感謝。我希望你能看到如何有用這樣做。

回答

1

這就是代碼的地方,所以它會破壞。

我想你的意思是看到調用堆棧。
在visual studio中:Debug - > Windows - > Call Stack

調用堆棧可以告訴你如何得到該行的代碼(被稱爲工作流中,其功能)

+0

是的,但假設最終用戶通過GCC命令行,所以不能看棧就像使用IDE時一樣。我猜測如果可能的話,在沒有看到堆棧的情況下在FIEM和LINE上顯示一個立即上層的信息,將會很有趣。 – GameDeveloper

+1

@DarioOO假設程序員可以很好地使用自己選擇的工具,這是完全合理的。在你的例子中,他們知道他們圍繞gdb的方式。 – molbdnilo

+0

是的,但仍有一種情況是有用的。該版本:用戶只會看到他的應用程序崩潰在「Vector.h」,而顯然錯誤是在別處。讓記者有正確的線路可以幫助支持員工抓住錯誤,並且通常用戶沒有調試器 – GameDeveloper