คำถามติดแท็ก gdb

2
ขั้นตอนในการก้าวเข้าสู่ขั้นตอนและก้าวออกไปด้วย GDB ได้อย่างไร?
ฉันพิมพ์helpในขณะที่ฉันอยู่ใน GDB แต่ไม่พบอะไรเลยเกี่ยวกับการก้าวเข้าสู่การก้าวออกไปและการก้าวออก ฉันใส่เบรกพอยต์ในโปรแกรม Assembly ใน_start( break _start) หลังจากนั้นฉันพิมพ์nextและเสร็จสิ้นการดีบัก ฉันเดาว่ามันเป็นเพราะมันเสร็จแล้ว_startและไม่ได้เข้าร่วมอย่างที่ฉันต้องการ ใครก็ตามที่สามารถช่วยได้

5
ฉันจะค้นหาหน่วยความจำรั่วไหลของกระบวนการทำงานได้อย่างไร
มีวิธีฉันสามารถค้นหาหน่วยความจำรั่วไหลของกระบวนการทำงานหรือไม่ ฉันสามารถใช้ Valgrind เพื่อค้นหาการรั่วไหลของหน่วยความจำก่อนเริ่มกระบวนการ ฉันสามารถใช้ GDB เพื่อแนบกับกระบวนการทำงาน ฉันจะดีบักการรั่วไหลของหน่วยความจำของกระบวนการทำงานได้อย่างไร
19 c  gdb  memory-leaks 

3
วิธีการคอมไพล์โดยไม่มีการออปติไมซ์ -O0 โดยใช้ CMake
ฉันใช้Scientific Linux (SL) ฉันกำลังพยายามรวบรวมโครงการที่ใช้ไฟล์ C ++ (.cpp) เป็นจำนวนมาก ในไดเรกทอรีuser/project/Buildฉันป้อนmakeเพื่อคอมไพล์และเชื่อมโยงไฟล์. cpp ทั้งหมด ฉันต้องไปuser/run/แล้วพิมพ์./run.sh values.txt การแก้ปัญหาด้วย GDB ฉันต้องไปuser/runแล้วพิมพ์และเรียกใช้ผมใส่gdb ../project/Build/bin/Project แต่ผมกำลังพยายามที่จะพิมพ์ออกค่าของตัวแปรโดยใช้run -Project INPUT/inputfile.txtp variablename s1 = <value optimized out>แต่ฉันได้รับข้อความ ฉันได้ทำการวิจัยออนไลน์แล้วและดูเหมือนว่าฉันจำเป็นต้องรวบรวมโดยไม่มีการเพิ่มประสิทธิภาพ-O0เพื่อใช้ในการแก้ไข แต่ฉันจะป้อนสิ่งนั้นได้ที่ไหน ในCMakeLists? ถ้าเป็นเช่นนั้น CMakeLists ใด หนึ่งในproject/Buildหรือproject/src/project?

2
C @ t {++} หมายถึงอะไรในหน้า man gdb?
ฉันกำลังอ่าน manpage สำหรับ gdb และฉันพบว่า: You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2. C @ t {++} ดูเหมือน regex แต่ฉันไม่สามารถถอดรหัสได้ มันหมายความว่าอะไร?
16 man  documentation  gdb 

2
gdb สามารถดีบัก suid root โปรแกรมได้หรือไม่?
ผมเขียนโปรแกรมที่โทรและsetuid(0)execve("/bin/bash",NULL,NULL) จากนั้นฉันก็ทำ chown root:root a.out && chmod +s a.out เมื่อฉันรัน./a.outฉันจะได้รูทเชลล์ อย่างไรก็ตามเมื่อฉันทำgdb a.outมันเริ่มกระบวนการตามผู้ใช้ปกติและเปิดตัวเปลือกผู้ใช้ ดังนั้น ... ฉันจะดีบักโปรแกรมรูทของ setuid ได้ไหม?
16 debugging  setuid  gdb 

1
จะทำให้ gdb ไม่ถามฉัน“ y หรือ n” ได้อย่างไร?
เมื่อฉันใช้คำสั่ง GDB add-symbol-fileเพื่อโหลดสัญลักษณ์ GDB จะถามฉันเสมอว่า 'y หรือ n' ดังนี้: gdb> add-symbol-file mydrv.ko 0xa0070000 add symbol table from file "mydrv.ko" at .text_addr = 0xa0070000 (y or n) วิธีที่จะทำให้มันไม่ถามและดำเนินการอย่างเงียบ ๆ ?
14 debugging  gdb 

2
การถ่ายโอนข้อมูลหลักกระบวนการโดยไม่ฆ่ากระบวนการ
มีวิธีรับ core dump (หรือคล้ายกัน) สำหรับกระบวนการโดยไม่ฆ่ากระบวนการจริงหรือไม่ ฉันมีกระบวนการหลามแบบมัลติเธรดที่ทำงานบนระบบฝังตัว และฉันต้องการที่จะได้ภาพรวมของกระบวนการภายใต้สภาวะปกติ (เช่นกับกระบวนการอื่น ๆ ที่จำเป็นต้องใช้) แต่ฉันไม่มีหน่วยความจำเพียงพอที่จะเชื่อมต่อ gdb (หรือเรียกใช้ภายใต้ gdb) โดยไม่ต้องใช้กระบวนการหลาม เป็นคนเดียวที่ทำงาน ฉันหวังว่าคำถามนี้สมเหตุสมผล

3
เหตุใด GDB จึงต้องมีความสามารถในการเรียกใช้งานได้ดีรวมถึง core dump
ฉันกำลังดีบักโดยใช้ core dumps และโปรดทราบว่า gdb ต้องการให้คุณส่งไฟล์ที่สามารถเรียกทำงานได้รวมถึง core dump ทำไมนี้ หากคอร์ดัมพ์มีหน่วยความจำทั้งหมดที่กระบวนการใช้อยู่จะไม่มีไฟล์ประมวลผลภายในคอร์ดัมพ์หรือไม่ อาจไม่มีการรับประกันว่า exe ทั้งหมดจะถูกโหลดเข้าสู่หน่วยความจำ (โดยปกติไฟล์ปฏิบัติการแต่ละไฟล์จะไม่ใหญ่มากนัก) หรือบางทีการถ่ายโอนข้อมูลหลักอาจไม่มีหน่วยความจำที่เกี่ยวข้องทั้งหมดหลังจากทั้งหมด? สำหรับสัญลักษณ์ (บางทีพวกเขาไม่ได้โหลดเข้าสู่หน่วยความจำตามปกติ)?
11 core-dump  gdb 

2
ประวัติ Unix: ส่งคืนรหัสฐานแปด?
วันนี้ฉันถูกโยนทิ้งโดยgdb: Program exited with code 0146. gdbพิมพ์รหัสส่งคืนในฐานแปด ; ดูสาเหตุที่ฉันพบ: http://comments.gmane.org/gmane.comp.gdb.devel/30363 แต่นั่นไม่ใช่คำตอบที่น่าพอใจอย่างยิ่ง googling ที่รวดเร็วบางแห่งไม่เปิดเผยประวัติดังนั้นฉันจึงหวังว่าจะมีใครรู้เรื่องนั้นบ้าง คำถามที่ค่อนข้างจะเกี่ยวข้องใครจะดูรหัสส่งคืนในฐานแปดได้อย่างไร บางทีเครื่องรุ่นเก่า ๆ มักพิมพ์รหัสส่งคืนหรือไม่ $ printf %o\\n $? ค่อนข้างน่าอึดอัดใจ :)
10 gdb  history 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.