ใน GDB ฉันจะข้ามไปยังเฟรมสแต็คการโทรสูงสุดโดยตรงได้อย่างไร
ฉันมีโปรแกรม C ที่แยกส่วนข้อผิดพลาดหลังจากที่ลงลึกเข้าไปในระเบียบซ้ำซ้ำ การเคลื่อนย้ายกระบวนการใน GDB นั้นไร้ประโยชน์เนื่องจาก call stack frame มีความลึกอย่างน้อย 1,000 เฟรมและการเรียกฟังก์ชันซ้ำเป็นชุดของการเรียกฟังก์ชัน recursive ทั่วไปสี่ชุด (ดังนั้นจุดพักดูเหมือนจะไร้ประโยชน์) การเรียกซ้ำไปยัง backtrace เพียงแค่อ่านชื่อฟังก์ชั่นทั้งสี่ชื่อซ้ำแล้วซ้ำอีก มันเกิดขึ้นกับฉันว่าการทำ 'up' 'up' 'up' ... จะทำให้ฉันสูงขึ้นดังนั้นฉันจะได้เห็นว่ารูปแบบนี้เริ่มต้นเกิดขึ้นครั้งแรก แต่ดูเหมือนว่ามันจะมีประสิทธิภาพมากกว่าที่จะเริ่มต้นจากการโทรสูงสุด stack frame และ step down แทนเนื่องจากลางสังหรณ์ของฉันคือการเรียกซ้ำแบบไม่สิ้นสุดเริ่มต้นในกระบวนการ หาก call stack มี N frames ทั้งหมดฉันรู้ว่าฉันทำได้ gdb>> up N เพื่อไปที่ด้านบนของสแต็ค (เฟรม Nth) แต่ปัญหาคือฉันไม่รู้ N มีคำสั่งสำหรับการค้นหาจำนวนเฟรมทั้งหมดในสแต็กการโทรหรือไม่ หรือมีคำสั่ง GDB ในตัวที่ลื่นไหลสำหรับการกระโดดไปที่เฟรมสูงสุดหรือไม่? …