Chrome

2011-10-18 7 views
6

'daki konsoldan kod çalıştırırken bir hata için yığın izini alma Konsoldan bir işlevi çağırıyorum ancak bir istisna atarken kodun normal şekilde yürütülmesi gibi bir yığın izi almıyorum.Chrome

Komutumu (belki de try/catch ile) bu bilgileri sağlamasını sağlamak için değiştirebileceğim bir yöntem var mı?

netleştirmek için:

page.js:

function otherStuff() { return ['a','b',undefined,'c']; 
function doStuff() { 
    var x = otherStuff(); 
    var z = parseInt(x[2]); // this will throw an error 
} 

konsolu, page.js

> otherStuff(); 

Ben hiçbir satır numarası almak bağlayan bir html sayfası yüklendikten sonra Bana gönderilen hata. Bunu sayfadan çalıştırırken (konsol yerine) bir satır numarası ve yığın izi alırdım.

+0

Bu komut nedir? kromun hangi versiyonu? (annenizin kızlık soyadı nedir?) – Neal

+0

Cevabım için güncellemeye bakın. – Neal

cevap

11

ayrıntılı rağmen, bu Chrome JS konsolunda interaktif hata yığın izleme yazdırır: Bir sivil Error nesne atılır ise

try { 
    throw new Error(); 
} catch (e) { 
    console.error(e.stack); 
} 

Ne yazık ki bu işe yaramaz.

+0

Bu oldukça iyi çalışıyor. Veriler farklı şekilde biçimlendirildi ancak hepsi orada (benim için en önemlisi satır numarasıdır). Bir 'Error' nesnesi atılırsa, stacktrace bilgilerim kaybolur, düzeltilsin mi? Bu durumda 'Error' nesnesinden aldığımızdan, JS standart Hata nesnelerini temel alan herhangi bir özel hata nesnesi için de aynı –

+0

Evet. Bir dizeyi attığımda 'catch' deyiminde bir kesme noktası ayarlamayı denedim, Chrome'un kullanabileceği bir tür uygun istisna nesnesi oluşturup oluşturmadığını görmeye çalıştım - korkarım böyle bir şey yok. – millimoose

+1

Sadece bir not: MobileSafari, hatalarına "yığın" özelliği sağlamaya yetmiyor. –

2

Kodunuzda bir hata var.

Bir kapatma ayracı eksik:

function otherStuff() { return ['a','b',undefined,'c']; //} where am i? 
function doStuff() { 
    var x = otherStuff(); 
    var z = parseInt(x[2]); // this will throw an error 
} 

Yan noktası:

parseInt(undefined)değil bir hata atmak yok. durumda durum: http://jsfiddle.net/maniator/Zequj/2/

+0

Elbette tüm sayılar doğru, bu aceleci kötü bir örnektir. –