คำถามติดแท็ก stack-trace

รายงานสแต็กเฟรมที่แอ็คทีฟ ณ เวลาใดเวลาหนึ่งระหว่างการดำเนินการของโปรแกรม

4
e.printStackTrace เทียบเท่าในหลาม
ฉันรู้ว่าprint(e)(โดยที่ e เป็นข้อยกเว้น) พิมพ์ข้อยกเว้นที่เกิดขึ้น แต่ฉันพยายามค้นหา python ที่เทียบเท่าของ Java e.printStackTrace()ที่มีร่องรอยข้อยกเว้นตรงกับบรรทัดที่มันเกิดขึ้นและพิมพ์ร่องรอยทั้งหมดของมัน ใครช่วยกรุณาบอกฉันเทียบเท่าe.printStackTrace()ใน Python?

15
C ++ แสดงการติดตามสแต็กบนข้อยกเว้น
ฉันต้องการมีวิธีรายงานการติดตามสแต็กกับผู้ใช้หากมีข้อผิดพลาดเกิดขึ้น วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ใช้รหัสพิเศษจำนวนมากหรือไม่ ในการตอบคำถาม: ฉันต้องการให้พกพาได้ถ้าเป็นไปได้ ฉันต้องการข้อมูลที่จะปรากฏขึ้นเพื่อให้ผู้ใช้สามารถคัดลอกกองติดตามและส่งอีเมลถึงฉันหากมีข้อผิดพลาดเกิดขึ้น


9
ฉันจะได้รับทับทิมเพื่อพิมพ์ backtrace เต็มแทนการตัดทอน?
เมื่อฉันได้รับการยกเว้นมักจะมาจากส่วนลึกภายใน call stack เมื่อสิ่งนี้เกิดขึ้นบ่อยกว่านั้นบรรทัดรหัสที่ละเมิดจริงจะถูกซ่อนไว้จากฉัน: tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError) from tmp.rb:10:in `s' from tmp.rb:13:in `r' from tmp.rb:16:in `q' from tmp.rb:19:in `p' from tmp.rb:22:in `o' from tmp.rb:25:in `n' from tmp.rb:28:in `m' from tmp.rb:31:in `l' ... 8 levels... from tmp.rb:58:in `c' from tmp.rb:61:in `b' from tmp.rb:64:in `a' from tmp.rb:67 …

10
มีวิธีการถ่ายโอนข้อมูลกองติดตามโดยไม่ทิ้งข้อยกเว้นใน java?
ฉันกำลังคิดที่จะสร้างเครื่องมือดีบั๊กสำหรับแอปพลิเคชัน Java ของฉัน ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะได้รับการติดตามแบบสแต็กเหมือนException.printStackTrace()แต่ไม่มีข้อผิดพลาดเกิดขึ้นจริงหรือไม่ เป้าหมายของฉันคือการทิ้งสแต็กเพื่อดูว่าใครเป็นผู้โทร

14
เหตุผลที่เป็นทางการสำหรับ“ ซอฟต์แวร์ทำให้การเชื่อมต่อยกเลิก: ข้อผิดพลาดในการเขียนซ็อกเก็ต”
รับตัวอย่างสแต็กการติดตามนี้ เกิดจาก: java.net.SocketException: ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาด ในการเขียนซ็อกเก็ตที่ java.net.SocketOutputStream.socketWrite0 (วิธีดั้งเดิม) ฉันพยายามตอบคำถามต่อไปนี้: รหัสอะไรที่จะโยนข้อยกเว้นนี้ (JVM? / Tomcat? / รหัสของฉัน?) ทำให้เกิดข้อยกเว้นนี้จะถูกโยนอะไร เกี่ยวกับ # 1: แหล่งที่มาของ JVM ของซันไม่มีข้อความที่แน่นอนนี้ แต่ฉันคิดว่าข้อความซอฟต์แวร์ที่ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาดในการเขียนซ็อกเก็ตเกิดจากการใช้งานดั้งเดิมSocketOutputStream: private native void socketWrite0(FileDescriptor fd, byte[] b, int off, int len) throws IOException; เกี่ยวกับ # 2 ฉันเดาว่ามันเกิดขึ้นเมื่อลูกค้าได้ยกเลิกการเชื่อมต่อก่อนที่จะได้รับการตอบสนองอย่างเต็มที่ (เช่นส่งคำขอ แต่ก่อนที่จะได้รับการตอบสนองอย่างเต็มรูปแบบมันก็ปิด / ยุติ / ออฟไลน์) คำถาม: สมมติฐานข้างต้นถูกต้อง (# …

11
จะส่ง stacktrace ไปยัง log4j ได้อย่างไร?
สมมติว่าคุณตรวจพบข้อยกเว้นและรับสิ่งต่อไปนี้ในเอาต์พุตมาตรฐาน (เช่นพูดคอนโซล) หากคุณทำe.printStackTrace () : java.io.FileNotFoundException: so.txt at java.io.FileInputStream.<init>(FileInputStream.java) at ExTest.readMyFile(ExTest.java:19) at ExTest.main(ExTest.java:7) ตอนนี้ฉันต้องการส่งสิ่งนี้แทนคนตัดไม้เช่น, พูด, log4j เพื่อรับสิ่งต่อไปนี้: 31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt 32204 [AWT-EventQueue-0] ERROR at java.io.FileInputStream.<init>(FileInputStream.java) 32235 [AWT-EventQueue-0] ERROR at ExTest.readMyFile(ExTest.java:19) 32370 [AWT-EventQueue-0] ERROR at ExTest.main(ExTest.java:7) ฉันจะทำสิ่งนี้ได้อย่างไร try { ... } catch (Exception e) { final String s; ... …

2
ฉันจะสร้างข้อยกเว้นใหม่ใน Javascript ได้อย่างไร แต่เก็บสแต็คไว้?
ใน Javascript สมมติว่าฉันต้องการดำเนินการล้างข้อมูลเมื่อเกิดข้อยกเว้น แต่ให้ข้อยกเว้นดำเนินการต่อไปเพื่อกระจายสแต็กเช่น: try { enterAwesomeMode(); doRiskyStuff(); // might throw an exception } catch (e) { leaveAwesomeMode(); throw e; } doMoreStuff(); leaveAwesomeMode(); ปัญหาของรหัสนี้คือการจับและ rethrowing ข้อยกเว้นทำให้ข้อมูลการติดตามสแต็กถึงจุดนั้นหายไปดังนั้นหากข้อผิดพลาดถูกดักจับในภายหลังอีกครั้งสูงขึ้นบนสแต็กการติดตามสแต็กจะลงไปที่ -โยน. สิ่งนี้แย่เพราะมันหมายความว่ามันไม่มีฟังก์ชั่นที่ทำให้เกิดข้อยกเว้น ตามที่ปรากฎลอง .. ในที่สุดก็มีพฤติกรรมเหมือนกันใน Chrome อย่างน้อย (นั่นคือไม่ใช่การโยนซ้ำที่เป็นปัญหาอย่างแม่นยำ แต่มีตัวจัดการบล็อกข้อยกเว้นอยู่เลย) ไม่มีใครรู้วิธีที่จะ rethrow ข้อยกเว้นใน Javascript แต่รักษาร่องรอยสแต็คที่เกี่ยวข้องกับมันได้หรือไม่ ความล้มเหลวนั้นวิธีการเกี่ยวกับคำแนะนำสำหรับวิธีอื่น ๆ ในการเพิ่มตัวจัดการการล้างข้อมูลบนข้อยกเว้นที่ปลอดภัยขณะเดียวกันก็จับการติดตามสแต็กที่สมบูรณ์เมื่อมีข้อยกเว้นเกิดขึ้น ขอบคุณสำหรับคำแนะนำใด ๆ :)

12
วิธีการเพิ่ม Stacktrace หรือ Debug Option เมื่อสร้าง Android Studio Project
ฉันพยายามตรวจสอบข้อผิดพลาดในการสร้างโปรเจ็กต์ในเอาต์พุตคอนโซลดังต่อไปนี้: :myapp:processDebugResources FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:processDebugResources'. ... ... * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. ฉันสงสัยว่ามันมีบางอย่างที่เกี่ยวข้องกับทรัพยากรที่ไม่พบข้อผิดพลาด คำถามของฉันคือที่ระดับ IDE ฉันจะเพิ่ม--stacktraceหรือ--debugตัวเลือกเพื่อให้สามารถผลิตข้อมูลเพิ่มเติมสำหรับฉันที่จะแก้ปัญหา?

3
รับการติดตามสแต็กปัจจุบันใน Ruby โดยไม่เพิ่มข้อยกเว้น
ฉันต้องการบันทึก backtrace ปัจจุบัน (stacktrace) ในแอพ Rails 3 โดยไม่มีข้อยกเว้นเกิดขึ้น มีความคิดอย่างไร ทำไมฉันถึงต้องการสิ่งนี้ ฉันกำลังพยายามติดตามการโทรที่เกิดขึ้นเมื่อ Rails ค้นหาเทมเพลตเพื่อที่ฉันจะได้เลือกส่วนหนึ่งของกระบวนการที่จะลบล้าง (เพราะฉันต้องการเปลี่ยนเส้นทางการดูสำหรับคอนโทรลเลอร์คลาสย่อยของฉัน) ฉันต้องการเรียกมันจากไฟล์: gems\actionpack-3.2.3\lib\action_dispatch\middleware\templates\rescues\missing_template.erb. ฉันรู้ว่านั่นไม่ใช่แนวทางปฏิบัติที่ดีที่สุด แต่ฉันรู้ว่ามันเป็นดาวน์สตรีมของสแต็กจากที่ที่เกิดการค้นหาเทมเพลต
141 ruby  stack-trace 

7
แสดงหมายเลขบรรทัดในชุดติดตามสแต็กสำหรับ. NET ในโหมด Release
มีวิธีแสดงบรรทัดในการติดตามสแต็กสำหรับ. NET build / deployed ในโหมด Release หรือไม่? UPDATE: ใบสมัครของฉันแบ่งออกเป็นสามโครงการห้องสมุดระดับและหนึ่งโครงการ "เว็บไซต์" ASP.NET ข้อผิดพลาดที่ฉันพยายามติดตามคือหนึ่งในโครงการห้องสมุดสามชั้น ฉันปรับใช้ไฟล์ pdb สำหรับโครงการไลบรารีคลาสที่สร้างข้อผิดพลาด "การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ" หมายเลขบรรทัดยังคงไม่ปรากฏในการติดตามสแต็ก ฉันจำเป็นต้องปรับใช้ไฟล์ pdb เพื่อให้โครงการทั้งหมดได้รับหมายเลขบรรทัดในการติดตามสแต็กหรือไม่ วิธีแก้ปัญหาการทำงาน การปรับใช้ไฟล์ pdb สำหรับแต่ละแอปพลิเคชันแก้ไขปัญหาหมายเลขบรรทัด

10
เหตุใด exception.printStackTrace () จึงถือว่าเป็นการปฏิบัติที่ไม่ดี
มีเป็นจำนวนมากของวัสดุออกมีซึ่งแสดงให้เห็นว่าการพิมพ์ร่องรอยสแต็คของข้อยกเว้นคือการปฏิบัติที่ไม่ดี เช่นจากการตรวจสอบ RegexpSingleline ใน Checkstyle: การตรวจสอบนี้สามารถใช้ [... ] เพื่อค้นหาแนวปฏิบัติที่ไม่ดีทั่วไปเช่นการเรียก ex.printStacktrace () อย่างไรก็ตามฉันกำลังดิ้นรนเพื่อค้นหาทุกที่ที่ให้เหตุผลที่ถูกต้องว่าทำไมการติดตามสแต็กจึงมีประโยชน์มากในการติดตามสิ่งที่ทำให้เกิดข้อยกเว้น สิ่งที่ฉันทราบ: ผู้ใช้ปลายทางไม่ควรมองเห็นสแต็กแทร็ก (สำหรับประสบการณ์ของผู้ใช้และวัตถุประสงค์ด้านความปลอดภัย) การสร้างสแต็กแทร็กเป็นกระบวนการที่ค่อนข้างแพง (แม้ว่าจะไม่น่าจะเป็นปัญหาในสถานการณ์ 'พิเศษ' ส่วนใหญ่) เฟรมเวิร์กการบันทึกจำนวนมากจะพิมพ์การติดตามสแต็กให้คุณ (ของเราไม่ทำและไม่เปลี่ยนไม่ได้ง่ายๆ) การพิมพ์การติดตามสแต็กไม่ถือเป็นการจัดการข้อผิดพลาด ควรใช้ร่วมกับการบันทึกข้อมูลอื่น ๆ และการจัดการข้อยกเว้น มีเหตุผลอะไรอีกบ้างที่หลีกเลี่ยงการพิมพ์สแต็กแทร็กในโค้ดของคุณ

8
Java / Android - จะพิมพ์การติดตามสแต็กแบบเต็มได้อย่างไร
ใน Android (Java) ฉันจะพิมพ์สแต็กเทรซแบบเต็มได้อย่างไร หากแอปพลิเคชันของฉันขัดข้องจาก nullPointerException หรือบางสิ่งบางอย่างแอปพลิเคชันจะพิมพ์การติดตามสแต็กเต็ม (เกือบ) แบบเต็มดังนี้: java.io.IOException: Attempted read from closed stream. com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream. at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545) at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488) at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417) at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313) at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164) Caused by: java.io.IOException: Attempted read from closed stream. at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159) at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212) …

3
จะพิมพ์การติดตามสแต็กแบบเต็มได้อย่างไร?
ตัวอย่างเช่นในที่เดียว ... //---------------a try { // some network call } catch(WebException we) { throw new MyCustomException("some message ....", we); } ... และอีกที่หนึ่ง ... //--------------b try { // invoke code above } catch(MyCustomException we) { Debug.Writeline(we.stacktrace); // <---------------- } stacktrace ที่ฉันพิมพ์มันเริ่มจาก a ถึง b เท่านั้นไม่รวม stacktrace ภายในจาก WebException ฉันจะพิมพ์ stacktrace ทั้งหมดได้อย่างไร …

7
จะรับผลลัพธ์ของ console.trace () เป็น string ใน javascript ด้วย chrome หรือ firefox ได้อย่างไร
console.trace()แสดงผลลัพธ์บนคอนโซล ฉันต้องการได้ผลลัพธ์เป็นสตริงและบันทึกลงในไฟล์ ฉันไม่ได้กำหนดชื่อฟังก์ชั่นและฉันยังไม่สามารถได้รับชื่อของพวกเขาด้วย callee.caller.name

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.