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

เป็นกระบวนการค้นหาและลดจำนวนข้อบกพร่องหรือข้อบกพร่องในโปรแกรมคอมพิวเตอร์จึงทำให้มีพฤติกรรมตามที่คาดไว้

8
วิธีการดีบักสคริปต์ทุบตี?
ฉันมีปัญหากับสคริปต์บางอย่างในทุบตีเกี่ยวกับข้อผิดพลาดและพฤติกรรมที่ไม่คาดคิด ฉันต้องการตรวจสอบสาเหตุของปัญหาเพื่อให้สามารถใช้การแก้ไขได้ มีวิธีที่ฉันสามารถเปิด "debug-mode" บางชนิดเพื่อทุบตีเพื่อรับข้อมูลเพิ่มเติมหรือไม่
135 bash  debugging 

3
ฉันจะทำให้ cron ทำงานได้อย่างไรในตอนนี้สำหรับการทดสอบ / การดีบัก โดยไม่ต้องเปลี่ยนกำหนดการ!
ฉันมีงาน cron ที่กำหนดให้ทำงานทุกวันนอกเหนือจากการเปลี่ยนกำหนดเวลามีวิธีอื่นที่จะทำการทดสอบคำสั่งทันทีเพื่อดูว่ามันทำงานได้ตามที่ตั้งใจหรือไม่?
133 cron  debugging 

3
การแก้ไขปัญหาเครือข่าย Linux และการดีบัก
ในบางครั้งผู้ใช้ Linux และ Unix ต้องเผชิญกับปัญหาเครือข่ายต่างๆ ปัญหาเหล่านี้ส่วนใหญ่มีการนำเสนอที่นี่และที่ฟอรัมการแก้ไขปัญหาอื่น ๆ แต่ปัญหาเหล่านี้เป็นรูปธรรมและมีข้อมูลทางเทคนิคเพิ่มเติมมากมายและบางครั้งก็ค่อนข้างยากที่จะเข้าใจประเด็นหลักและสาเหตุที่แท้จริงของพฤติกรรมของระบบบั๊ก ด้วยการถามคำถามนี้ความตั้งใจของฉันคือการเริ่มต้นเพจวิกิชุมชนซึ่งอนุญาตให้ใช้งานการแก้ไขปัญหาเครือข่ายทั่วไปและประสบการณ์การดีบัก ฉันหวังว่าผู้ใช้ Linux และ Unix สามารถจดจำและแก้ไขปัญหาได้ง่ายขึ้น ("หารและพิชิต") โดยใช้หน้านี้ ผู้ปกครองของหน้านี้ควรจะ ปฏิบัติที่ดีที่สุดในการวินิจฉัยปัญหา แต่ที่นี่เราควรเน้นการแก้ไขปัญหาเครือข่ายจากผู้ใช้และเคอร์เนลพื้นที่ ฉันคิดว่าถ้าคุณ: แบ่งปันข้อมูลเกี่ยวกับการใช้เครื่องมือวิเคราะห์เครือข่ายที่ยอดเยี่ยมพร้อมตัวอย่างการใช้งานที่เป็นรูปธรรมและตัวอย่างข้อบกพร่องของเครือข่ายซึ่งช่วยในการตรวจจับ แบ่งปันลิงก์ไปยังบทช่วยสอนเครือข่ายที่ยอดเยี่ยมซึ่งเชื่อมต่อกับหัวข้อนี้ บอกวิธีการทั่วไปหรือสูตรอาหารที่อนุญาตให้แก้ไขปัญหาเครือข่ายบางระดับ แบ่งปันข้อมูลเกี่ยวกับชุดเครื่องมือของคุณสำหรับการดีบักเครือข่ายและการแก้ไขปัญหา มันจะเหมาะที่สุดสำหรับหัวข้อนี้ ฉันจะเริ่มต้นจากการแบ่งปันการเชื่อมโยงไป varios เครื่องมือวินิจฉัยและง่ายกวดวิชาอายุ 12 ปี นอกจากนี้ยังมีการกวดวิชา Archlinuxดูเหมือนว่าจะมีข้อมูลจริงเกี่ยวกับเรื่องของเรา และสำหรับการดำน้ำในเครือข่ายลินุกซ์เราจำเป็นต้องเยี่ยมชมLinux Networking-HOWTOอย่างแน่นอน

4
`git pull` กินการบ้านของฉันอย่างไร
ฉันรู้สึกเหมือนเด็กในสำนักงานใหญ่อธิบายว่าสุนัขกินการบ้านของฉันในคืนก่อนที่จะถึงกำหนด แต่ฉันกำลังดูข้อผิดพลาดการสูญเสียข้อมูลบางอย่างที่บ้าในหน้าและฉันไม่สามารถเข้าใจได้ว่ามันเกิดขึ้นได้อย่างไร ฉันอยากรู้ว่าคอมไพล์กินพื้นที่เก็บข้อมูลของฉันได้อย่างไร! ฉันใส่คอมไพล์ผ่านนักเขียนหลาย ๆ ครั้งและมันก็ไม่เคยกระพริบ ฉันเคยใช้มันเพื่อแบ่ง repo 20 Gig Subversion ออกเป็น 27 repos git และกรองตัว foo ออกจากพวกมันเพื่อแก้ปัญหายุ่งเหยิงและมันก็ไม่เคยสูญเสียไบต์บนฉัน reflog อยู่ที่นั่นเสมอเพื่อถอยกลับ คราวนี้พรมหมดแล้ว! จากมุมมองของฉันสิ่งที่ฉันทำก็คือการเรียกใช้git pullและมันทำให้พื้นที่เก็บข้อมูลในเครื่องของฉันหมด ฉันไม่ได้หมายความว่า "ทำให้สับสนรุ่นที่เช็คเอาต์" หรือ "สาขาที่ฉันไป" หรืออะไรทำนองนั้น ผมหมายถึงสิ่งทั้งหมดจะหายไป นี่คือภาพหน้าจอของเทอร์มินัลของฉันในเหตุการณ์: ให้ฉันแนะนำคุณผ่านสิ่งนั้น พรอมต์คำสั่งของฉันมีข้อมูลเกี่ยวกับ repo git ปัจจุบัน (โดยใช้การนำ vcs_info ของ prezto) เพื่อให้คุณสามารถดูว่า git repo หายไปเมื่อใด คำสั่งแรกนั้นปกติพอ: » caleb » jaguar » ~/p/w/incil.info …

8
เราสามารถรับข้อมูลคอมไพเลอร์จากเอลฟ์ไบนารีได้หรือไม่?
มีโอกาสบ้างไหมที่จะรู้วิธีสร้างไบนารีภายใต้ Linux? (และหรือ Unix อื่น ๆ ) คอมไพเลอร์, รุ่น, เวลา, ตั้งค่าสถานะ ฯลฯ ... ฉันดูreadelfและไม่พบอะไรมาก แต่อาจมีวิธีอื่นในการวิเคราะห์รหัสไบนารี / ส่วน ฯลฯ ... สิ่งใดที่คุณรู้วิธีการแยก?

4
จะทราบได้อย่างไรว่าโปรแกรมติดอยู่ใน linux?
ฉันใช้คำสั่งต่อไปนี้บนเซิร์ฟเวอร์ ubuntu ของฉัน root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace ดูเหมือนว่าจะแขวนไปเรื่อย ๆ เมื่อใดก็ตามที่สิ่งนี้เกิดขึ้นบน AIX ฉันก็แค่รับ PID ของกระบวนการที่ละเมิดและพูด $ procstack <pid_of_stuck_process> และมันใช้เพื่อแสดง callstack ทั้งหมดของกระบวนการ procstackใน linux / ubuntu นั้นเทียบเท่ากับอะไรบ้าง?

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

2
การเรียกใช้แอปพลิเคชันลงท้ายด้วย“ Segmentation Fault”
ฉันมีแอปพลิเคชันบรรทัดคำสั่งที่เมื่อรันไม่ได้ทำในสิ่งที่ควรทำและ ณ จุดหนึ่งออกจากข้อความ: Segmentation fault สิ่งนี้หมายความว่า? ฉันควรทำอย่างไร?

3
ฉันจะดูบรรทัดคำสั่งที่แน่นอนถูกเรียกใช้งานในอินสแตนซ์ของ bash ได้อย่างไร
ฉันมีbashอินสแตนซ์ที่ใช้เวลานาน(ภายในscreenเซสชัน) ที่กำลังดำเนินการชุดคำสั่งที่ซับซ้อนภายในลูป บรรทัดคำสั่งยาวเขียนอยู่ในเทอร์มินัล - มันไม่ได้อยู่ในสคริปต์ใด ๆ ตอนนี้ฉันรู้รหัสกระบวนการทุบตีและฉันมีการเข้าถึงรูท - ฉันจะดูบรรทัดคำสั่งที่ถูกดำเนินการภายในได้bashอย่างไร ตัวอย่าง bash$ echo $$ 1234 bash$ while true ; do \ someThing | somethingElse 2>/foo/bar | \ yetAnother ; sleep 600 ; done และในอินสแตนซ์ของเชลล์อื่นฉันต้องการดูบรรทัดคำสั่งที่ดำเนินการภายใน PID 1234: bash$ echo $$ 5678 bash$ su - sh# cd /proc/1234 sh# # Do something here …


4
Kernel Hacking Environment
ฉันทำงานในระบบปฏิบัติการฝังตัวเช่น uCOS, ThreadX ขณะที่ฉันเขียนรหัสแอพใน Linux ตอนนี้ฉันวางแผนที่จะเริ่มเรียนรู้ Linux Kernel ฉันมีคำถามสองสามข้อเกี่ยวกับสิ่งแวดล้อม อันไหนดีที่สุด distro ซึ่งมีเครื่องมือที่ใช้งานง่ายสำหรับการพัฒนาเคอร์เนล (จนถึงตอนนี้ฉันใช้ RHEL และ Fedora ในขณะที่ฉันพอใจกับสิ่งเหล่านี้มันก็ดูเหมือนว่า Ubuntu จะมีสคริปต์ที่สร้างขึ้นเพื่อการรวบรวมเคอร์เนลอย่างง่ายเช่นmake_kpkg) คุณสามารถอธิบายการตั้งค่าที่ดีที่สุดสำหรับการดีบักเคอร์เนลได้หรือไม่? ในขณะที่การดีบัก OS อื่นที่ฝังตัวฉันได้ใช้พอร์ตอนุกรมเพื่อถ่ายโอนข้อมูลความคืบหน้า JTAG และอื่น ๆ การตั้งค่าเคอร์เนล Linux ชนิดใดที่ใช้? (เครื่องทดสอบที่ใช้พอร์ตอนุกรมของฉันจะเพียงพอสำหรับความต้องการของฉันหรือไม่ถ้าใช่จะกำหนดค่าเคอร์เนลเพื่อถ่ายโอนข้อมูลไปยังพอร์ตอนุกรมได้อย่างไร) ฉันวางแผนที่จะเปลี่ยนเส้นทางข้อความเคอร์เนลไปยังคอนโซลซีเรียลซึ่งจะอ่านในแล็ปท็อปของฉัน เครื่องมือใดที่ดีที่สุดสำหรับการดีบักและติดตามรหัสเคอร์เนล ดังกล่าวก่อนหน้านี้ serial console เป็นวิธีเดียวหรือไม่ หรือมีอินเตอร์เฟสชนิด IDE / JTAG สำหรับพีซีอยู่หรือไม่

3
ฉันจะดูได้อย่างไรว่าคำสั่งใดทำงานในเชลล์ผ่านนามแฝงหรือฟังก์ชั่น
ฉันมีฟังก์ชั่นทุบตี (หรือนามแฝง) function install() {sudo apt-get install $@}ตัวอย่างเช่น เมื่อใช้คำสั่งสิ่งที่ผมคาดว่าจะจริงจะทำงานเป็นinstall dicelab sudo apt-get install dicelabฉันจะดูได้ว่าอะไรที่เชลล์ใช้งานจริง? ฉันต้องการตรวจสอบให้แน่ใจว่านามแฝงที่ซับซ้อนของฉันทำงานได้ตามที่คาดไว้
20 bash  shell  debugging 

2
จะทราบได้อย่างไรว่ากระบวนการใดที่เขียนถึง STDOUT
ฉันมีกระบวนการทำงานสองกรณี หนึ่งในนั้นคือ "frEAkIng oUT!" และข้อผิดพลาดการพิมพ์ไม่หยุดที่ STDOUT ฉันต้องการฆ่ากระบวนการที่เสียหาย แต่ฉันต้องทำให้แน่ใจว่าฉันจะไม่ยุติกระบวนการที่ผิด พวกเขาทั้งคู่เริ่มต้นพร้อมกันและใช้topฉันสามารถเห็นพวกเขาทั้งคู่ใช้หน่วยความจำและ CPU ในปริมาณเท่ากัน ฉันไม่สามารถหาสิ่งใดที่ชี้ให้เห็นว่ากระบวนการใดที่ทำงานไม่ดี สิ่งที่ปลอดภัยที่สุดคือการพิจารณาว่ากระบวนการใด / pid ที่เขียนไปยัง STDOUT มีวิธีใดที่จะทำเช่นนั้น?

2
เครื่องมือสำหรับการดีบักตารางเส้นทางในเครื่อง Linux?
มีเครื่องมือที่ debugs ตารางเส้นทางบนเครื่อง Linux หรือไม่? ฉันหมายถึงที่ฉันสามารถใช้โดยการป้อนที่อยู่ ip ลงไปมันจะนำตารางเส้นทางที่มีอยู่มาพิจารณาและเอาท์พุทการแข่งขันจากตารางดังนั้นฉันจะได้รับความคิดว่าแพ็กเก็ตจะไปไหน
18 ip  routing  debugging 

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?

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