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

การดีบักเป็นกระบวนการตรวจสอบสถานะของโปรแกรม - โดยทั่วไปด้วยเครื่องมือตรวจแก้จุดบกพร่อง - ในขณะที่มันกำลังทำงานและพยายามค้นหาข้อบกพร่องที่ทำให้มันทำงานผิดปกติ

10
จะทำอย่างไรเมื่อคุณหมดทุกเส้นทางเพื่อแก้ไขข้อบกพร่อง
ฉันเป็นโปรแกรมเมอร์รุ่นเยาว์ (ประสบการณ์การทำงาน 4 เดือนจนถึงปัจจุบัน) ทำงานกับ Cross Application Mobile Application (ทีม 1 คน - ดังนั้นเป็นเพียงตัวฉันเอง) ฉันมีข้อบกพร่องในโปรแกรม / แอพนี้ซึ่งค่อนข้างใหญ่ (30 ไฟล์ส่วนหัวที่แตกต่างกันแต่ละไฟล์มี cpp ของตัวเองด้วย) ฉันพยายามติดตามสิ่งที่เกิดขึ้นกับข้อผิดพลาด & เพื่อแก้ไข (แม้พยายามใช้แฮ็กเพื่อให้ทำงานได้) แต่มีวิธีแก้ปัญหามากกว่าหนึ่งโหลหรือมากกว่า (ความคิดที่ฉันมีคือสาเหตุของปัญหา ) ฉันไม่มีสิ่งใดมากระตุ้นให้ฉันติดตามสิ่งที่เป็นข้อบกพร่องหรือแก้ไขข้อผิดพลาด คุณมีคำแนะนำสำหรับโปรแกรมเมอร์รุ่นเยาว์ของเทคนิคบางอย่างไหม (ลองวิ่งพิมพ์รหัสของฉันทั้งหมดลงบนกระดาษและอ่านมันด้วยปากกา ฯลฯ ) ฉันสามารถใช้ช่วยฉันได้ไหม เพื่อให้บริบทเพิ่มเติมเล็กน้อยสำหรับข้อบกพร่องของฉัน มันเกี่ยวข้องกับข้ามแพลตฟอร์ม API Mosync เมื่อฉันดำเนินการตามลำดับที่เฉพาะเจาะจงของหน้าจอปัจจุบันไม่ได้วาดใหม่ (& ปรากฏขึ้น) ว่าหน้าจอที่แสดงก่อนหน้านี้ยังคงได้รับเหตุการณ์ตัวชี้ / การกดปุ่ม & ไม่ใช่หน้าจอปัจจุบัน ลำดับที่เฉพาะเจาะจง: - หน้าจอเมนูที่แสดง - …

3
มีทฤษฎีหรือหนังสือเกี่ยวกับวิธีแก้จุดบกพร่อง "โดยทั่วไป" หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันอ่านและศึกษาวิทยาการคอมพิวเตอร์และวิศวกรรมจำนวนมากและฉันแทบจะไม่เคยเห็นหนังสือเกี่ยวกับการดีบั๊กหรือทฤษฎีว่าจะดีบั๊กอย่างไร (แม้ว่าฉันจะพัฒนาทฤษฎีการดีบักของตัวเอง) มีการดีบักทฤษฎีและ / หรือหนังสือหรือไม่ ทำไม / ทำไมไม่ ฉันสามารถอ่านวิธีการดีบักโดยใช้ gdb และข้อมูลที่มีประโยชน์ที่สุดเกี่ยวกับการพัฒนาที่ฉันได้รับจากการอ่านวิธีใช้ gdb
12 debugging 

6
การดีบัก: ทำความเข้าใจรายละเอียดเกี่ยวกับสาเหตุที่การแก้ไขบางอย่างทำงาน [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว เมื่อทำการดีบักบางครั้งฉันพบว่าฉันทำการเปลี่ยนแปลงบางอย่างและฉันไม่แน่ใจ 100% ว่าทำไมการเปลี่ยนแปลงเหล่านั้นจึงแก้ไขข้อผิดพลาดบางอย่างในโปรแกรม จำเป็นหรือไม่ที่จะต้องเข้าใจทุกรายละเอียดว่าทำไมข้อผิดพลาดบางอย่างจึงเกิดขึ้นและทำไมการเปลี่ยนแปลงบางอย่างจึงกำจัดข้อผิดพลาดเหล่านั้นออกไป หรือเป็นเรื่องปกติในหมู่นักพัฒนาเพื่อให้โปรแกรมทำงานโดยไม่ทราบรายละเอียดเกี่ยวกับสาเหตุที่โปรแกรมแก้ไขทำงานจริงหรือ
12 skills  debugging  bug 

7
เหตุใดโรงเรียนจึงไม่ครอบคลุม debuggers [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว หลังจากยังบ้านอีกคำถามในดังนั้น ดูเหมือนว่านักเรียนส่วนใหญ่ไม่มีความรู้ว่า debugger คืออะไรหรือจะใช้งานอย่างไร ฉันรู้สึกว่าการรู้วิธีใช้ดีบักเกอร์นั้นสำคัญพอ ๆ กับการเขียนโปรแกรมพื้นฐานอื่น ๆ คำถามไม่ควรทำการดีบั๊กและวิธีการใช้เครื่องมือการดีบักที่ทันสมัยได้รับการสอนควบคู่กับพื้นฐานการเขียนโปรแกรม? ถ้าไม่ใช่เพราะอะไร

5
คุณจะดีบักรูปแบบไบนารีอย่างไร
ฉันต้องการที่จะสามารถแก้ปัญหาการสร้างตัวสร้างไบนารี ตอนนี้ฉันกำลังพิมพ์ข้อมูลอินพุตไปยังตัวแยกวิเคราะห์ไบนารี่จากนั้นก็ลึกเข้าไปในโค้ดและพิมพ์การแม็พของอินพุตไปยังเอาต์พุตจากนั้นใช้การแม็พเอาต์พุต (จำนวนเต็ม) และใช้เพื่อค้นหาจำนวนเต็มที่สอดคล้องกัน ในไบนารี ค่อนข้างงอแงและต้องการให้ฉันแก้ไขซอร์สโค้ดอย่างลึกซึ้งเพื่อให้ได้การแม็พระหว่างอินพุตและเอาต์พุต ดูเหมือนว่าคุณสามารถดูไบนารีในรูปแบบที่แตกต่างกัน (ในกรณีของฉันฉันต้องการดูมันในหน่วยจำนวน 8 บิตเป็นตัวเลขทศนิยมเพราะมันค่อนข้างใกล้กับอินพุต) ที่จริงแล้วตัวเลขบางตัวเป็น 16 บิตบาง 8 หรือ 32 เป็นต้นดังนั้นอาจมีวิธีดูไบนารีด้วยตัวเลขที่แตกต่างกันเหล่านี้ที่เน้นในหน่วยความจำในบางวิธี วิธีเดียวที่ฉันจะเห็นว่าเป็นไปได้คือถ้าคุณสร้าง visualizer เฉพาะกับรูปแบบ / เค้าโครงไบนารีจริง ดังนั้นจึงรู้ได้ว่าลำดับ 32 บิตควรอยู่ที่ใดและควรใช้เลข 8 บิตที่ไหนเป็นต้นนี่เป็นงานที่ต้องทำมากมายและมีเล่ห์เหลี่ยมในบางสถานการณ์ ดังนั้นสงสัยว่ามีวิธีทั่วไปที่จะทำ ฉันยังสงสัยด้วยว่าวิธีทั่วไปในการแก้ไขข้อบกพร่องของประเภทนี้ในปัจจุบันคืออะไรดังนั้นบางทีฉันอาจได้รับแนวคิดบางอย่างเกี่ยวกับสิ่งที่ต้องลองจากสิ่งนั้น
11 debugging  binary 

5
เรียนรู้ที่จะตรวจสอบข้อบกพร่อง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันไม่แน่ใจด้วยซ้ำว่าจะกำหนดความยากลำบากนี้ได้อย่างไร มันทำให้ฉันนึกถึงการทดสอบที่พนักงานที่คาดหวังสองคนทำกับฉันก่อนที่ฉันจะได้งาน พวกเขาจะเลือกวัตถุในห้องจากนั้นฉันจะได้รับอนุญาตให้ถามคำถามเพื่อช่วยตัวเองในการพิจารณาว่าวัตถุนั้นคืออะไร (เหมือนคำถาม 20 ข้อ) ฉันเก่งเรื่องนี้อย่างน่าขัน (ไม่ฉันไม่เคยได้คะแนนสูงสำหรับความอ่อนน้อมถ่อมตน) ดังนั้นฉันคิดว่าฉันเก่งในการแก้ไขข้อบกพร่อง ... แต่นี่คือสิ่งที่ฉันค้นพบเมื่อเร็ว ๆ นี้ ฉันเก่งในสถานการณ์นั้นเพราะมันง่ายมากที่จะเห็นทุกอย่างที่อยู่ในห้องดังนั้นฉันจึงสามารถเข้าถึงปัญหาของฉันได้ด้วยแนวคิดบางส่วนของส่วนประกอบ ในสาระสำคัญฉัน "รู้ว่าฉันไม่รู้อะไร" แต่ด้วยการเขียนโปรแกรมฉันพบกับสถานการณ์มากมายซึ่งเป็นปัญหาที่ฉันไม่ทราบ ฉันรู้ว่ามันเสีย แต่ฉันไม่มีแนวคิดว่ามันจะแตกได้อย่างไร ฉันได้ทำตามคำแนะนำทั้งหมดแล้วฉันรู้ว่าเทคโนโลยีค่อนข้างดี ... ถ้าฉันซื่อสัตย์ฉันรู้สึกว่าฉันเพิ่งนึกภาพสิ่งที่อาจผิดไปดังนั้นฉันจึงสามารถทดสอบพวกเขาและหวังว่าจะหาวิธีแก้ปัญหา ฉันจะพัฒนาทักษะนั้นได้อย่างไร ฉันต้องทำอะไรเพื่อช่วยให้จินตนาการที่ จำกัด ของฉันเกิดขึ้นพร้อมกับวิธีที่โครงงานของฉันอาจแตกได้ มีแบบฝึกหัด (ปริศนาอาจ?) ที่สามารถทำให้ฉันดีขึ้นที่นี้ ฉันรู้ว่าการรักษาที่ใหญ่ที่สุดอาจเป็นเพียงประสบการณ์ ... แต่ฉันหวังว่าจะช่วยเร่งกระบวนการให้ดีขึ้นถ้าทำได้ การจ้องมองที่หน้าจอคอมพิวเตอร์ของฉันอย่างว่างเปล่าเป็นเวลาสองสามชั่วโมงจะไม่สนุก ...

4
กระบวนการหรือเธรดของซอมบี้คืออะไร
กระบวนการหรือเธรดของซอมบี้คืออะไรและสร้างขึ้นมาอย่างไร ฉันเพิ่งจะฆ่าพวกเขาหรือฉันจะทำอะไรบางอย่างเพื่อรับการวินิจฉัยเกี่ยวกับวิธีการที่พวกเขาตาย?

5
เคล็ดลับสำหรับการแก้ไขข้อบกพร่องด้วยข้อมูลน้อยมาก? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันได้สืบทอดโครงการที่มี codebase ค่อนข้างใหญ่และนักพัฒนาดั้งเดิมไม่ค่อยตอบกลับอีเมลหากเคย มีวิธีที่แตกต่างมากมายในการทำบางสิ่งในนั้นและฉันไม่รู้ทั้งหมด รหัสที่ซ้ำกันจำนวนมากตามเส้นทางเหล่านี้ (แทนที่จะรวมฟังก์ชั่นโดยพูดว่า 5 หน้าที่ค่อนข้างเหมือนกันคือมันเป็นรหัสที่คัดลอกมา 5 หน้า) และปัญหาที่ละเอียดบางอย่างในฐานข้อมูล (เราทุกคนเคยได้ยินรหัสสปาเก็ตตี้ แต่คุณเคยได้ยินเกี่ยวกับฐานข้อมูลสปาเก็ตตี้ไหม) ทั้งหมดนี้ฉันสามารถจัดการกับเวลาส่วนใหญ่ไม่มีปัญหา ปัญหาคือเมื่อลูกค้าพบข้อบกพร่องบางแห่ง พวกเขามักจะส่งภาพหน้าจอของปัญหาตอนจบและพูดว่า "คุณช่วยดูเรื่องนี้ได้ไหม?" ในขณะที่เน้นสิ่งที่เฉพาะเจาะจงบนหน้าเว็บที่ผิดและบางครั้งสิ่งที่คาดหวัง มีข้อมูลเพิ่มเติมน้อยมากและพยายามพูดคุยกับพวกเขาและรับมากขึ้น (เช่นสิ่งที่พวกเขาทำเพื่อให้ได้ผลลัพธ์) ก็เหมือนกับการถอนฟัน โดยพื้นฐานแล้วมันจะลดลงถึงสิ่งนี้: ฐานรหัสขนาดใหญ่และซับซ้อนฉันไม่คุ้นเคย 100% หลายสิ่งหลายอย่างอาจผิดพลาดได้ ข้อมูลน้อยมากเกี่ยวกับวิธีการที่บั๊กมา ใครบ้างมีเคล็ดลับกลโกงคำแนะนำและอื่น ๆ เกี่ยวกับวิธีการแก้ไขข้อบกพร่องของประเภทนี้หรือไม่?
11 debugging 

8
เราควร debug เว็บแอปพลิเคชั่น PHP อย่างปลอดภัยโดยไม่เปิดเผยความลับต่อคู่แข่งอย่างไร
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ เมื่อเร็ว ๆ นี้ฉันทำโปรแกรม ฉันลืมลบรหัส 2 บรรทัด ความผิดพลาดนั้นมีค่าฉัน $ 800 ต่อวันทุกวัน ฉันเขียนโปรแกรมด้วย PHP หากผู้เข้าชมใช้พรอกซีมันจะเปลี่ยนเส้นทางที่อื่น การใช้ดีบักเกอร์เป็นไปไม่ได้เพราะบางรหัสมี ioncube เนื่องจากโปรแกรมนั้นเปลี่ยนเส้นทางไปที่อื่นไม่ว่าจะเกิดอะไรขึ้นก็ยากที่จะดูว่าส่วนใดของรหัสที่ถูกประมวลผล ดังนั้นฉันจึงใส่ข้อมูลการแก้ไขข้อบกพร่องทุกที่ ฉันคิดว่าฉันจะลบพวกเขาในภายหลัง วิธีที่เป็นธรรมชาติที่สุดในการดีบักคือการใส่ข้อมูลการดีบักลงในไฟล์ ปัญหาคือฉันมักจะใช้ proxy ดังนั้นหลังจากที่ฉันเปลี่ยนโปรแกรมฉันมักจะต้องดาวน์โหลดไฟล์ข้อความด้วย filezilla บ่อยครั้งที่ไฟล์ข้อความไม่แสดงสิ่งที่ฉันคิดว่าควรแสดง ในที่สุดฉันก็ตัดสินใจที่จะแสดงข้อผิดพลาดบนเว็บ ฉันคิดว่ามีโหมดการแก้ไขข้อบกพร่อง อย่างไรก็ตามฉันกลัวว่าฉันจะลืมลบข้อมูลการดีบัก ฉันถือว่ามีโหมดการดีบักหากผู้ใช้ทำเช่น? debuggingmode = 1 เช่น อย่างไรก็ตามฉันรู้สึกหวาดระแวงว่าคู่แข่งของฉันสามารถเดาคำหลักลับได้ ฉันลบข้อมูลการแก้ไขข้อบกพร่องส่วนใหญ่ ฉันลืมที่จะลบมันและอันนั้นจะปรากฏขึ้นก็ต่อเมื่อผู้ใช้ใช้พรอกซีจากประเทศที่ถูกต้อง ปรากฎว่าฉันไม่มีพร็อกซีจากประเทศที่ถูกต้องและไม่ทราบว่า หลังจากโปรแกรมใช้งานได้ 24 ชั่วโมงฉันอัพโหลดไฟล์นั้นไปยังโดเมนหลักของฉัน คู่แข่งของฉันใช้พรอกซีดูรหัสการดีบัก เขาคัดลอกความคิดและนั่นคือวิธีที่ฉันสูญเสีย $ 800 ต่อวัน เมื่อมองย้อนกลับไปฉันมีช่วงเวลาที่ยากลำบากในการดูว่าฉันไปไหนผิด ฉันระมัดระวังเป็นพิเศษ แต่มันก็เกิดขึ้น …
11 php  debugging 

11
ข้อแตกต่างระหว่างการดีบักและการทดสอบคืออะไร
คำแนะนำเกี่ยวกับการทดสอบซอฟต์แวร์ (Ammann & Offutt) กล่าวถึง p.32 แบบทดสอบครบกำหนด 5 ระดับ: ระดับ 0ไม่มีความแตกต่างระหว่างการทดสอบและการดีบัก ระดับ 1วัตถุประสงค์ของการทดสอบคือการแสดงให้เห็นว่าซอฟต์แวร์ใช้งานได้ ระดับ 2วัตถุประสงค์ของการทดสอบคือการแสดงให้เห็นว่าซอฟต์แวร์ไม่ทำงาน ระดับ 3จุดประสงค์ของการทดสอบไม่ได้เป็นการพิสูจน์สิ่งใดเป็นพิเศษ แต่เพื่อลดความเสี่ยงในการใช้ซอฟต์แวร์ การทดสอบระดับ 4เป็นวินัยทางจิตใจที่ช่วยให้ผู้เชี่ยวชาญด้านไอทีทุกคนพัฒนาซอฟต์แวร์ที่มีคุณภาพสูงขึ้น แม้ว่าพวกเขาจะไม่ได้ลงรายละเอียดเพิ่มเติมมากนัก การดีบักและการทดสอบต่างกันอย่างไร

3
การพิมพ์ไปที่ console / stdout เป็นกลยุทธ์การดีบั๊กหรือไม่
สมมติว่าเรามีฟังก์ชั่นเช่นนี้: public void myStart() { for (int i = 0; i<10; i++) myFunction(i); } private int myFunction(int a) { a = foo(a); a = bar(a); return a; } private int foo(int a) { //do something here //something gnarly here //etc return aValue; } private int bar(int a) { // do …
11 debugging 

13
เราสามารถรับประกันได้ว่าโปรแกรมจะไม่ผิดพลาดหรือไม่?
เรามีระบบที่นี่ เมื่อเร็ว ๆ นี้มีการคำนวณที่ไม่ถูกต้องในตัวเลขหนึ่งตัวในรายงานที่ระบบสร้างขึ้น จากประสบการณ์ของเราเราไม่เคยพบปัญหา / ข้อผิดพลาดใด ๆ ในระบบนี้มาหลายปี เนื่องจากผู้เขียนระบบนี้ได้หายไปแล้วเราจึงแทบจะไม่สามารถติดตามโปรแกรมได้ แต่เราได้ตรวจสอบข้อมูลอินพุตการตั้งค่าและถูกต้องแล้ว ตอนนี้คำถามของฉันคือโปรแกรมคอมพิวเตอร์จะเกิดข้อผิดพลาดโดยไม่มีเหตุผลหรือไม่? ถ้าฉันกดเครื่องเซิร์ฟเวอร์หนึ่งในจำนวนที่คอมพิวเตอร์คำนวณจะกลายเป็นหมายเลขอื่นและคำนวณผิดหรือไม่ ฉันเห็นด้วยกับความคิดของฉันว่ามันค่อนข้างบ้า แต่ฉันแค่อยากรู้เราจะรู้ได้อย่างไรว่าปัญหาไม่ได้เกิดจากโปรแกรมและอินพุต แต่มีปัจจัยอื่น ๆ PS ระบบบ้านี้ไม่มีบันทึก
10 debugging 

7
ฉันจะใช้วิธีการใดเพื่อลดโอกาสที่จะแนะนำบั๊กใหม่ ๆ ในแอพที่ซับซ้อนแบบเก่า?
ที่ทำงานฉันมักจะต้องพัฒนา (และแก้ไขข้อผิดพลาด) ในระบบเก่า (.NET 1) รหัส whos เป็นสปาเก็ตตี้ที่สมบูรณ์ - ด้วยความคิดเพียงเล็กน้อยที่กำหนดให้กับชื่อตัวแปรโครงสร้างของโปรแกรมและความคิดเห็น ด้วยเหตุนี้มันทำให้ฉันอายุมากขึ้นที่จะเข้าใจว่าต้องเปลี่ยนบิตใดและฉันมักจะ 'ทำลาย' ซอฟต์แวร์ที่มีอยู่เพราะฉันได้ทำการดัดแปลง ผมจริงๆต้องการที่จะใช้ไม่กี่เดือน (กับเพื่อนร่วมงานบริการ) จะผ่านมันไป refactor แต่ที่มีอยู่พัฒนาทั้งสองไม่สามารถเห็นความจำเป็น - ไม่คิดว่าเวลาเอาใจใส่ในการนี้ (ระบบเป็นจำนวนมาก) ฉันกลัวที่จะต้องทำงานกับรหัสเพราะต้องใช้เวลาหลายวันในการแก้ไขบางอย่างเท่านั้นเพื่อตรวจสอบว่าฉันพังอย่างอื่นแล้ว สิ่งนี้ทำให้ฉันดูไร้ความสามารถ - ดังนั้นฉันจะจัดการกับสิ่งนี้ได้อย่างไร

5
กำจัดวัตถุอย่างถูกต้องเมื่อเซิร์ฟเวอร์ถูกยกเลิก
ฉันกำลังทำงานในโครงการ C ++ ขนาดใหญ่ ประกอบด้วยในเซิร์ฟเวอร์ที่เปิดเผย REST API ให้ส่วนติดต่อที่เรียบง่ายและใช้งานง่ายสำหรับระบบที่กว้างมากซึ่งประกอบด้วยเซิร์ฟเวอร์อื่น ๆ codebase นั้นค่อนข้างใหญ่และซับซ้อนและพัฒนาไปตามกาลเวลาโดยไม่มีการออกแบบที่เหมาะสม งานของฉันคือการใช้คุณสมบัติใหม่และ refactor / แก้ไขรหัสเก่าเพื่อให้มีเสถียรภาพและเชื่อถือได้มากขึ้น ในขณะนี้เซิร์ฟเวอร์สร้างวัตถุที่มีอายุยืนยาวจำนวนหนึ่งซึ่งไม่เคยยกเลิกหรือกำจัดเมื่อกระบวนการยุติลง สิ่งนี้ทำให้ Valgrind เกือบจะใช้การไม่ได้สำหรับการตรวจจับการรั่วไหลเนื่องจากเป็นไปไม่ได้ที่จะแยกแยะระหว่างการรั่วไหลที่ถูกต้องตามกฎหมายนับพันจากการ "ที่อันตราย" ความคิดของฉันคือการตรวจสอบให้แน่ใจว่าวัตถุทั้งหมดถูกกำจัดก่อนที่จะถูกยกเลิก แต่เมื่อฉันทำข้อเสนอนี้เพื่อนร่วมงานและเจ้านายของฉันไม่เห็นด้วยฉันชี้ให้เห็นว่าระบบปฏิบัติการจะเพิ่มหน่วยความจำนั้นต่อไป จะทำให้การปิดเซิร์ฟเวอร์ช้าลง (ซึ่งในขณะนี้เป็นการเรียกไปยังstd::exit) ฉันตอบว่าการมีขั้นตอนการปิด "สะอาด" ไม่ได้แปลว่าต้องใช้ เราสามารถโทรstd::quick_exitหรือkill -9ดำเนินการได้ตลอดเวลาหากเรารู้สึกใจร้อน พวกเขาตอบว่า "daemons Linux และกระบวนการส่วนใหญ่ไม่ต้องกังวลเรื่องการเพิ่มหน่วยความจำเมื่อปิดเครื่อง" ในขณะที่ฉันเห็นว่ามันเป็นความจริงที่ว่าโครงการของเราต้องการการแก้ไขข้อบกพร่องของหน่วยความจำที่แม่นยำเนื่องจากฉันได้พบความผิดพลาดของหน่วยความจำดับเบิ้ลอิสระและตัวแปรเริ่มต้น คุณคิดยังไง? ฉันกำลังพยายามอย่างไม่มีจุดหมายหรือไม่? ถ้าไม่ฉันจะโน้มน้าวใจเพื่อนร่วมงานและเจ้านายของฉันได้อย่างไร ถ้าเป็นเช่นนั้นทำไมและควรทำอย่างไร
9 c++  debugging  memory 

2
ข้อดีและข้อเสียของการสื่อสารระหว่างกระบวนการทำผ่านซ็อกเก็ตและหน่วยความจำที่ใช้ร่วมกันคืออะไร
ฉันเข้าใจว่าสองตัวเลือกอื่น ๆ อีกมากมายสำหรับการสื่อสารระหว่างกระบวนการสามารถ: แชร์หน่วยความจำ ซ็อกเก็ต จริงๆแล้วฉันเห็นตัวเลือกทั้งสองนี้ถูกเปิดเผยโดย Intellij Idea สำหรับการดีบักแอปพลิเคชัน Java ฉันต้องการทราบว่าข้อดีและข้อเสียของแต่ละวิธีคืออะไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.