นี่คือคำสั่ง strace64 ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
strace - ติดตามการโทรและสัญญาณของระบบ
เรื่องย่อ
สเตรซ [-CdffhikqrtttTvVxxy] [-In] [-bผู้บริหาร] [-eด่วน--aคอลัมน์]
[-oไฟล์] [-sขนาด] [-Pเส้นทาง] ... -ppid--D] [-Eคือ[=คลื่น-
[-uชื่อผู้ใช้] คำสั่ง [args]
สเตรซ -c[df] [-In] [-bผู้บริหาร] [-eด่วน--Oเหนือศีรษะ] [-Sเรียงลำดับ]
-ppid--D] [-Eคือ[=คลื่น--uชื่อผู้ใช้] คำสั่ง [args]
DESCRIPTION
ในกรณีที่ง่ายที่สุด สเตรซ ทำงานที่ระบุ คำสั่ง จนกว่าจะออก
มันสกัดกั้นและบันทึกการเรียกของระบบซึ่งถูกเรียกโดย
กระบวนการและสัญญาณที่ได้รับโดยกระบวนการ ชื่อของ
แต่ละการเรียกของระบบ อาร์กิวเมนต์และค่าส่งคืนจะถูกพิมพ์บน
ข้อผิดพลาดมาตรฐานหรือไฟล์ที่ระบุด้วย -o ตัวเลือก
สเตรซ เป็นเครื่องมือวินิจฉัย สอน และแก้จุดบกพร่องที่มีประโยชน์
ผู้ดูแลระบบ ผู้วินิจฉัย และผู้แก้ไขปัญหาจะพบมัน
ล้ำค่าสำหรับการแก้ปัญหาด้วยโปรแกรมที่ต้นทางคือ
ไม่พร้อมใช้งานเนื่องจากไม่จำเป็นต้องคอมไพล์ใหม่ตามลำดับ
เพื่อติดตามพวกเขา นักเรียน แฮกเกอร์ และผู้อยากรู้อยากเห็นมากเกินไปจะพบว่า
สามารถเรียนรู้ได้มากมายเกี่ยวกับระบบและระบบที่เรียกโดย
การติดตามแม้แต่โปรแกรมธรรมดา และโปรแกรมเมอร์จะพบว่าตั้งแต่
การเรียกและสัญญาณของระบบเป็นเหตุการณ์ที่เกิดขึ้นที่ผู้ใช้/เคอร์เนล
อินเทอร์เฟซการตรวจสอบขอบเขตนี้อย่างใกล้ชิดมีประโยชน์มากสำหรับbug
การแยกตัว การตรวจสุขภาพจิต และการพยายามยึดตามสภาพการแข่งขัน
แต่ละบรรทัดในการติดตามมีชื่อการเรียกของระบบ ตามด้วย
อาร์กิวเมนต์ในวงเล็บและค่าที่ส่งกลับ ตัวอย่างจาก
การติดตามคำสั่ง "cat /dev/null" คือ:
open("/dev/null", O_RDONLY) = 3
ข้อผิดพลาด (โดยทั่วไปคือค่าส่งคืน -1) มีสัญลักษณ์ errno และ error
สตริงต่อท้าย
open("/foo/bar", O_RDONLY) = -1 ENOENT (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)
สัญญาณจะถูกพิมพ์เป็นสัญลักษณ์สัญญาณและโครงสร้าง siginfo ที่ถอดรหัส หนึ่ง
ข้อความที่ตัดตอนมาจากการติดตามและขัดจังหวะคำสั่ง "sleep 666" คือ:
sigsuspend([])
--- ลายเซ็น {si_signo=SIGINT, si_code=SI_USER, si_pid=...} ---
+++ ถูกฆ่าโดย SIGINT +++
หากมีการเรียกระบบและในขณะเดียวกันกำลังดำเนินการอยู่
เรียกจากเธรด/กระบวนการอื่น จากนั้น สเตรซ จะพยายามรักษา
ลำดับของเหตุการณ์เหล่านั้นและทำเครื่องหมายการโทรที่กำลังดำเนินอยู่เป็น
ยังไม่เสร็จ. เมื่อโทรกลับจะถูกทำเครื่องหมายเป็น กลับมาทำงานต่อ.
[pid 28772] เลือก (4, [3], NULL, NULL, NULL
[pid 28779] clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
[pid 28772] <... เลือกดำเนินการต่อ> ) = 1 (ใน [3])
การหยุดชะงักของการเรียกระบบ (รีสตาร์ทได้) โดยการส่งสัญญาณ is
ประมวลผลต่างกันเนื่องจากเคอร์เนลยุติการเรียกของระบบและ
จัดให้มีการดำเนินการใหม่ทันทีหลังจากที่ตัวจัดการสัญญาณเสร็จสิ้น
อ่าน(0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (จะเริ่มต้นใหม่)
--- ซิกัล RM ... ---
rt_sigreturn(0xอี) = 0
อ่าน (0, "", 1) = 0
อาร์กิวเมนต์ถูกพิมพ์ในรูปแบบสัญลักษณ์ด้วยความหลงใหล ตัวอย่างนี้
แสดงเชลล์ดำเนินการเปลี่ยนเส้นทางเอาต์พุต ">>xyzzy":
open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
ที่นี่อาร์กิวเมนต์ที่สามของ open ถูกถอดรหัสโดยการทำลายแฟล็ก
อาร์กิวเมนต์เป็นสามองค์ประกอบ bitwise-OR และพิมพ์โหมด
ค่าในฐานแปดตามประเพณี เมื่อการใช้งานแบบดั้งเดิมหรือแบบพื้นเมืองแตกต่างกัน
จาก ANSI หรือ POSIX ควรใช้แบบฟอร์มหลัง ในบางกรณี,
สเตรซ ผลลัพธ์ได้รับการพิสูจน์แล้วว่าสามารถอ่านได้ง่ายกว่าแหล่งที่มา
ตัวชี้โครงสร้างถูกละเลยและสมาชิกจะแสดงเป็น
เหมาะสม. ในทุกกรณีอาร์กิวเมนต์มีรูปแบบ C-like . มากที่สุด
แฟชั่นที่เป็นไปได้ ตัวอย่างเช่น สาระสำคัญของคำสั่ง "ls -l
/dev/null" ถูกจับเป็น:
lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
สังเกตว่าอาร์กิวเมนต์ 'struct stat' ถูกละเลยการอ้างอิงอย่างไร และแต่ละอาร์กิวเมนต์เป็นอย่างไร
สมาชิกจะแสดงเป็นสัญลักษณ์ โดยเฉพาะอย่างยิ่ง สังเกตว่า
สมาชิก st_mode ถูกถอดรหัสอย่างระมัดระวังเป็นบิต-OR ของสัญลักษณ์และ
ค่าตัวเลข สังเกตในตัวอย่างนี้ด้วยว่าอาร์กิวเมนต์แรกของ
lstat เป็นอินพุตสำหรับการเรียกของระบบและอาร์กิวเมนต์ที่สองคือ an
เอาท์พุท เนื่องจากอาร์กิวเมนต์เอาต์พุตจะไม่ถูกแก้ไขหากระบบเรียก
ล้มเหลว อาร์กิวเมนต์อาจไม่ได้รับการอ้างอิงเสมอไป เช่น ลองใหม่อีกครั้ง
ตัวอย่าง "ls -l" ที่มีไฟล์ที่ไม่มีอยู่จริงจะสร้างสิ่งต่อไปนี้
สาย:
lstat("/foo/bar", 0xb004) = -1 ENOENT (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)
ในกรณีนี้ ไฟที่ระเบียงเปิดอยู่แต่ไม่มีใครอยู่บ้าน
ตัวชี้อักขระจะถูกยกเลิกการอ้างอิงและพิมพ์เป็นสตริง C ไม่ใช่-
อักขระการพิมพ์ในสตริงปกติจะแสดงด้วย C . ธรรมดา
รหัสหลบหนี คนแรกเท่านั้น ขนาด (32 โดยค่าเริ่มต้น) ไบต์ของสตริง
ถูกพิมพ์; สตริงที่ยาวกว่าจะมีจุดไข่ปลาต่อท้าย
ใบเสนอราคาปิด นี่คือบรรทัดจาก "ls -l" โดยที่ getpwuid ห้องสมุด
รูทีนกำลังอ่านไฟล์รหัสผ่าน:
read(3, "root::0:0:System Administrator:/"..., 1024) = 422
ในขณะที่โครงสร้างมีคำอธิบายประกอบโดยใช้วงเล็บปีกกา ตัวชี้อย่างง่าย และ
อาร์เรย์พิมพ์โดยใช้วงเล็บเหลี่ยมโดยคั่นด้วยเครื่องหมายจุลภาค
องค์ประกอบ นี่คือตัวอย่างจากคำสั่ง "id" บนระบบ with
รหัสกลุ่มเสริม:
กลุ่มรับ (32, [100, 0]) = 2
ในทางกลับกัน ชุดบิตยังแสดงโดยใช้วงเล็บเหลี่ยมแต่
องค์ประกอบชุดจะถูกคั่นด้วยช่องว่างเท่านั้น นี่คือเปลือก
เตรียมดำเนินการคำสั่งภายนอก:
sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
ในที่นี้ อาร์กิวเมนต์ที่สองคือชุดบิตของสองสัญญาณ SIGCHLD และ
ซิกตู ในบางกรณีบิตเซ็ตเต็มจนพิมพ์
องค์ประกอบที่ไม่ได้ตั้งค่ามีค่ามากกว่า ในกรณีนั้น bit-set จะถูกนำหน้า
โดยตัวหนอนเช่นนี้:
sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0
ในที่นี้ อาร์กิวเมนต์ที่สองแสดงถึงชุดสัญญาณทั้งหมด
OPTIONS
-c นับเวลา การโทร และข้อผิดพลาดสำหรับการเรียกแต่ละระบบ
และรายงานสรุปการออกโปรแกรม บนลินุกซ์
นี้พยายามที่จะแสดงเวลาของระบบ (เวลา CPU ที่ใช้
ทำงานในเคอร์เนล) โดยไม่ขึ้นกับนาฬิกาแขวน
เวลา. ถ้า -c ใช้กับ -f or -F (ด้านล่าง) เท่านั้น
ยอดรวมสำหรับกระบวนการที่ติดตามทั้งหมดจะถูกเก็บไว้
-C Like -c แต่ยังพิมพ์เอาต์พุตปกติในขณะที่
กระบวนการกำลังทำงาน
-D เรียกใช้กระบวนการติดตามเป็นหลานที่แยกออกมาไม่ใช่เป็น
ผู้ปกครองของผู้ตามรอย สิ่งนี้จะลดการมองเห็น
ผลกระทบของ สเตรซ โดยรักษาผู้ตามรอยโดยตรง
ลูกของกระบวนการโทร
-d แสดงผลลัพธ์การดีบักบางอย่างของ สเตรซ ตัวเองบน
มาตรฐานบกพร่อง.
-f ติดตามกระบวนการย่อยตามที่ถูกสร้างขึ้นโดย
ปัจจุบันติดตามกระบวนการอันเป็นผลมาจาก
ส้อม(2) ส้อม(2) และ โคลน(2) การเรียกระบบ บันทึก
ที่ -p PID -f จะแนบเธรดของกระบวนการทั้งหมด
PID หากเป็นแบบมัลติเธรดไม่ใช่เฉพาะเธรดที่มี
thread_id = PID
-ff ถ้า -o ชื่อไฟล์ มีผลใช้ตัวเลือกแต่ละ
กระบวนการติดตามถูกเขียนถึง ชื่อไฟล์.pid ที่ไหน pid
คือรหัสกระบวนการที่เป็นตัวเลขของแต่ละกระบวนการ นี่คือ
เข้ากันไม่ได้กับ -cเนื่องจากไม่มีการนับต่อกระบวนการ
จะถูกเก็บไว้
-F ตัวเลือกนี้ล้าสมัยแล้วและมีเหมือนเดิม
ฟังก์ชันเช่น -f.
-h พิมพ์สรุปความช่วยเหลือ
-i พิมพ์ตัวชี้คำสั่งในเวลาของ
ระบบโทร.
-k พิมพ์การติดตามสแต็กการดำเนินการของการติดตาม
กระบวนการหลังจากการเรียกแต่ละระบบ (ทดลอง)
ตัวเลือกนี้จะใช้ได้ก็ต่อเมื่อ สเตรซ ถูกสร้างขึ้น
กับลิบูนวินด์
-q ระงับข้อความเกี่ยวกับการแนบ การถอด ฯลฯ
สิ่งนี้เกิดขึ้นโดยอัตโนมัติเมื่อเอาต์พุตถูกเปลี่ยนเส้นทาง
ไปยังไฟล์และรันคำสั่งโดยตรงแทน
แนบ
-qq หากได้รับสองครั้ง ระงับข้อความเกี่ยวกับการออกจากกระบวนการ
สถานะ
-r พิมพ์การประทับเวลาสัมพัทธ์เมื่อเข้าสู่แต่ละระบบ
เรียก. สิ่งนี้บันทึกความแตกต่างของเวลาระหว่าง
การเริ่มต้นของการเรียกระบบต่อเนื่อง
-t นำหน้าแต่ละบรรทัดของการติดตามด้วยช่วงเวลาของวัน
-ต หากให้สองครั้ง เวลาที่พิมพ์จะรวม
ไมโครวินาที
-ttt หากให้สามครั้ง เวลาที่พิมพ์จะรวม
ไมโครวินาทีและส่วนนำหน้าจะถูกพิมพ์
เป็นจำนวนวินาทีนับตั้งแต่ยุค
-T แสดงเวลาที่ใช้ในการโทรของระบบ บันทึกนี้
ความแตกต่างของเวลาระหว่างจุดเริ่มต้นและ
สิ้นสุดการโทรแต่ละระบบ
-w สรุปความแตกต่างของเวลาระหว่างจุดเริ่มต้น
และสิ้นสุดการโทรแต่ละระบบ ค่าเริ่มต้นคือto
สรุปเวลาของระบบ
-v พิมพ์สภาพแวดล้อม, สถิติ,
เทอร์มิโอ เป็นต้น โทร. โครงสร้างเหล่านี้ดีมาก
ทั่วไปในการโทรและดังนั้นพฤติกรรมเริ่มต้นจึงปรากฏขึ้น
ส่วนย่อยที่เหมาะสมของสมาชิกโครงสร้าง ใช้สิ่งนี้
ตัวเลือกเพื่อรับรายละเอียดที่เต็มไปด้วยเลือดทั้งหมด
-V พิมพ์หมายเลขเวอร์ชันของ สเตรซ.
-x พิมพ์สตริงที่ไม่ใช่ ASCII ทั้งหมดเป็นสตริงฐานสิบหก
จัดรูปแบบ
-xx พิมพ์สตริงทั้งหมดในรูปแบบสตริงเลขฐานสิบหก
-y พิมพ์เส้นทางที่เกี่ยวข้องกับ file descriptor
ข้อโต้แย้ง
-ปป พิมพ์ ip: พอร์ตคู่ที่เกี่ยวข้องกับไฟล์ซ็อกเก็ต
คำอธิบาย
-a คอลัมน์ ปรับค่าที่ส่งกลับในคอลัมน์เฉพาะ (default
คอลัมน์ 40)
-b ซิสคอล หากถึง syscall ที่ระบุ ให้แยกจาก traced
กระบวนการ. ปัจจุบันเท่านั้น ผู้บริหาร syscall คือ
ได้รับการสนับสนุน. ตัวเลือกนี้มีประโยชน์หากคุณต้องการ
ติดตามกระบวนการแบบมัลติเธรดดังนั้นจึงต้องการ
-f แต่ไม่ต้องการติดตาม (อาจมาก
ซับซ้อน) เด็ก
-e ด่วน นิพจน์ที่มีคุณสมบัติเหมาะสมซึ่งแก้ไขเหตุการณ์ใด
เพื่อติดตามหรือวิธีการติดตามพวกเขา รูปแบบของ
นิพจน์คือ:
[มีคุณสมบัติ=][!]ค่า 1[,ค่า 2] ...
ที่ไหน มีคุณสมบัติ เป็นหนึ่งใน ติดตาม, ตัวย่อ, ละเอียด,
ดิบ, สัญญาณ, อ่านหรือ เขียน และ ความคุ้มค่า คือ
สัญลักษณ์หรือหมายเลขขึ้นอยู่กับคุณสมบัติ ค่าเริ่มต้น
รอบคัดเลือกคือ ติดตาม. การใช้เครื่องหมายอัศเจรีย์
ปฏิเสธชุดของค่า ตัวอย่างเช่น, -e เปิด
แปลว่า อย่างแท้จริง -e ติดตาม=เปิด ซึ่งในทางกลับกันหมายถึง
ติดตามเท่านั้น เปิด ระบบเรียก. ตรงกันข้าม,
-e ติดตาม=!เปิด หมายถึงการติดตามทุกการเรียกของระบบ
ยกเว้น เปิด. นอกจากนี้ ค่าพิเศษ ทั้งหมด
และ ไม่มี มีความหมายที่ชัดเจน
โปรดทราบว่าเชลล์บางตัวใช้เครื่องหมายอัศเจรีย์สำหรับ
การขยายประวัติแม้จะอยู่ในอาร์กิวเมนต์ที่ยกมา ถ้า
ดังนั้นคุณต้องหลีกเลี่ยงเครื่องหมายอัศเจรีย์ด้วย a
แบ็กสแลช
-e ติดตาม=เซ็ต
ติดตามเฉพาะชุดของการเรียกของระบบที่ระบุ NS
-c ตัวเลือกมีประโยชน์ในการพิจารณาว่าระบบใด
การโทรอาจเป็นประโยชน์ในการติดตาม ตัวอย่างเช่น,
ติดตาม=เปิด,ปิด,อ่าน,เขียน แปลว่า ติดตามเท่านั้น
การโทรทั้งสี่ระบบนั้น ระวังในการทำ
การอนุมานเกี่ยวกับขอบเขตผู้ใช้/เคอร์เนลหากเพียง a
กำลังตรวจสอบชุดย่อยของการเรียกระบบ NS
ค่าเริ่มต้นคือ ติดตาม=ทั้งหมด.
-e ติดตาม=ไฟล์
ติดตามการเรียกระบบทั้งหมดที่ใช้ชื่อไฟล์เป็น an
การโต้แย้ง. คุณสามารถคิดได้ว่าเป็นคำย่อ
สำหรับ -e ติดตาม=เปิด,stat,chmod,ยกเลิกการเชื่อมโยง,... ซึ่งเป็น
มีประโยชน์ในการดูว่าไฟล์ใดเป็นกระบวนการ
อ้างอิง นอกจากนี้ การใช้ตัวย่อ
รับรองว่าไม่ลืม
รวมการโทรเช่น ลสแตท ในรายการ เบทยา
คงจะลืมไปว่า
-e ติดตาม=กระบวนการ
ติดตามการเรียกระบบทั้งหมดที่เกี่ยวข้องกับกระบวนการ
การจัดการ. สิ่งนี้มีประโยชน์สำหรับการดูส้อม
รอและดำเนินการตามขั้นตอนของกระบวนการ
-e ติดตาม=เครือข่าย
ติดตามการเรียกของระบบที่เกี่ยวข้องกับเครือข่ายทั้งหมด
-e ติดตาม=สัญญาณ
ติดตามการเรียกของระบบที่เกี่ยวข้องกับสัญญาณทั้งหมด
-e ติดตาม=IPC
ติดตามการเรียกระบบที่เกี่ยวข้องกับ IPC ทั้งหมด
-e ติดตาม=เรียง
ติดตามการเรียกระบบที่เกี่ยวข้องกับตัวอธิบายไฟล์ทั้งหมด
-e ติดตาม=หน่วยความจำ
ติดตามการเรียกระบบที่เกี่ยวข้องกับการแมปหน่วยความจำทั้งหมด
-e ตัวย่อ=เซ็ต
ย่อผลลัพธ์จากการพิมพ์แต่ละสมาชิกของ
โครงสร้างขนาดใหญ่ ค่าเริ่มต้นคือ ตัวย่อ=ทั้งหมดส่วน
-v ตัวเลือกมีผลของ ตัวย่อ=ไม่มี.
-e ละเอียด=เซ็ต
โครงสร้างอ้างอิงสำหรับชุดที่ระบุของ
การโทรของระบบ ค่าเริ่มต้นคือ ละเอียด=ทั้งหมด.
-e ดิบ=เซ็ต พิมพ์อาร์กิวเมนต์ดิบและไม่ได้เข้ารหัสสำหรับ set . ที่ระบุ
ของการเรียกระบบ ตัวเลือกนี้มีผลกับ
ทำให้อาร์กิวเมนต์ทั้งหมดถูกพิมพ์เป็นเลขฐานสิบหก
สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณไม่เชื่อถือ
ถอดรหัสหรือคุณจำเป็นต้องรู้ตัวเลขที่แท้จริง
ค่าของอาร์กิวเมนต์
-e สัญญาณ=เซ็ต
ติดตามเฉพาะชุดย่อยของสัญญาณที่ระบุ NS
ค่าเริ่มต้นคือ สัญญาณ=ทั้งหมด. ตัวอย่างเช่น สัญญาณ =! ซิจิโอ
(หรือ สัญญาณ=!io) ทำให้สัญญาณ SIGIO ไม่เป็น
ติดตาม
-e อ่าน=เซ็ต ทำการดัมพ์เลขฐานสิบหกแบบเต็มและ ASCII ของ . ทั้งหมด
ข้อมูลที่อ่านจากตัวอธิบายไฟล์ที่ระบุไว้ใน
ชุดที่ระบุ ตัวอย่างเช่น เพื่อดูอินพุตทั้งหมด
กิจกรรมเกี่ยวกับ file descriptors 3 และ 5 ใช้
-e อ่าน=3,5. โปรดทราบว่าสิ่งนี้เป็นอิสระจาก
การติดตามปกติของ อ่าน(2) การเรียกระบบซึ่งก็คือ
ควบคุมโดยตัวเลือก -e ติดตาม=อ่าน.
-e เขียน=เซ็ต
ทำการดัมพ์เลขฐานสิบหกแบบเต็มและ ASCII ของ . ทั้งหมด
ข้อมูลที่เขียนถึง file descriptor ที่ระบุไว้ใน
ชุดที่ระบุ ตัวอย่างเช่น เพื่อดูผลลัพธ์ทั้งหมด
กิจกรรมเกี่ยวกับ file descriptors 3 และ 5 ใช้
-e เขียน=3,5. โปรดทราบว่าสิ่งนี้เป็นอิสระจาก
การติดตามปกติของ เขียน(2) ระบบเรียกซึ่ง
ถูกควบคุมโดยตัวเลือก -e ติดตาม=เขียน.
-I ขัดจังหวะได้
เมื่อ strace สามารถถูกขัดจังหวะด้วยสัญญาณ (เช่น
กด ^C) 1: ไม่มีสัญญาณถูกบล็อก 2: ร้ายแรง
สัญญาณถูกบล็อกขณะถอดรหัส syscall
(ค่าเริ่มต้น); 3: สัญญาณอันตรายถูกบล็อกเสมอ
(ค่าเริ่มต้นถ้า '-o FILE PROG'); 4: สัญญาณร้ายแรงและ
SIGTSTP (^Z) ถูกบล็อกเสมอ (มีประโยชน์ในการสร้าง
strace -o FILE PROG ไม่หยุดบน ^Z)
-o ชื่อไฟล์ เขียนเอาต์พุตการติดตามไปยังไฟล์ ชื่อไฟล์ ค่อนข้าง
กว่าที่จะ stderr ใช้ ชื่อไฟล์.pid if -ff ถูกนำมาใช้.
หากอาร์กิวเมนต์เริ่มต้นด้วย '|' หรือด้วย '!' แล้วก็
อาร์กิวเมนต์ที่เหลือถือเป็นคำสั่งและทั้งหมด
เอาต์พุตถูกส่งไปยังมัน สะดวกสำหรับ
ไพพ์เอาต์พุตการดีบักไปยังโปรแกรมโดยไม่ต้อง
ส่งผลกระทบต่อการเปลี่ยนเส้นทางของโปรแกรมที่ดำเนินการ
-O เหนือศีรษะ ตั้งค่าโอเวอร์เฮดสำหรับการติดตามการโทรของระบบไปที่
เหนือศีรษะ ไมโครวินาที สิ่งนี้มีประโยชน์สำหรับ
แทนที่ฮิวริสติกเริ่มต้นสำหรับการเดาว่า
ใช้เวลามากในการวัดเมื่อกำหนดเวลา
ระบบโทรโดยใช้ -c ตัวเลือก. ความถูกต้องของ
ฮิวริสติกสามารถวัดได้จากการจับเวลาที่กำหนด
โปรแกรมทำงานโดยไม่มีการติดตาม (โดยใช้ เวลา(1)) และ
เปรียบเทียบเวลาเรียกระบบสะสมกับ
ทั้งหมดที่ผลิตโดยใช้ -c.
-p pid แนบไปกับกระบวนการด้วย ID กระบวนการ pid และ
เริ่มการติดตาม การติดตามอาจสิ้นสุดลงเมื่อใดก็ได้
เวลาโดยสัญญาณขัดจังหวะแป้นพิมพ์ (CTRL-C)
สเตรซ จะตอบสนองโดยแยกตัวออกจาก
ติดตามกระบวนการ ปล่อยให้มัน (พวกเขา) เพื่อดำเนินการต่อ
วิ่ง. หลายรายการ -p สามารถใช้ตัวเลือกในการแนบ
สู่หลายกระบวนการ -p "`pidof PROG`" ไวยากรณ์คือ
ได้รับการสนับสนุน.
-P เส้นทาง ติดตามการโทรระบบเท่านั้นที่เข้าถึง เส้นทาง. แพลตฟอร์มที่หลากหลาย -P
สามารถใช้ตัวเลือกเพื่อระบุได้หลายเส้นทาง
-s ขนาด ระบุขนาดสตริงสูงสุดที่จะพิมพ์ (the
ค่าเริ่มต้นคือ 32) โปรดทราบว่าชื่อไฟล์ไม่ใช่
ถือว่าเป็นสตริงและพิมพ์เต็มเสมอ
-S เรียงลำดับ จัดเรียงผลลัพธ์ของฮิสโตแกรมที่พิมพ์โดย -c
ตัวเลือกตามเกณฑ์ที่กำหนด ค่านิยมทางกฎหมายคือ
เวลา, โทร, พร้อมชื่อและ ไม่มีอะไร (ค่าเริ่มต้นคือ เวลา).
-u ชื่อผู้ใช้ รันคำสั่งด้วย ID ผู้ใช้ ID กลุ่ม และ
กลุ่มเสริมของ ชื่อผู้ใช้. ตัวเลือกนี้คือ
มีประโยชน์เฉพาะเมื่อทำงานเป็นรูทและเปิดใช้งาน
การดำเนินการที่ถูกต้องของไบนารี setuid และ/หรือ setgid
เว้นแต่จะใช้ตัวเลือกนี้ setuid และ setgid
โปรแกรมจะดำเนินการโดยไม่มีสิทธิ์ที่มีประสิทธิภาพ
-E คือ=คลื่น รันคำสั่งด้วย คือ=คลื่น ในรายการสิ่งแวดล้อม
ตัวแปร
-E คือ ลบรายการออกจากรถเข็น คือ จากรายการสิ่งแวดล้อมที่สืบทอดมา
ตัวแปรก่อนส่งต่อไปยังคำสั่ง
วินิจฉัย
เมื่อ คำสั่ง ทางออก สเตรซ ออกโดยมีสถานะการออกเหมือนกัน ถ้า
คำสั่ง สิ้นสุดลงด้วยสัญญาณ สเตรซ จบลงด้วย
เป็นสัญญาณเดียวกัน ดังนั้น สเตรซ สามารถใช้เป็นกระบวนการห่อหุ้มได้
โปร่งใสต่อกระบวนการหลักที่เรียก โปรดทราบว่าผู้ปกครอง-
ความสัมพันธ์กับเด็ก (การแจ้งเตือนการหยุดสัญญาณ, ค่า getppid()
ฯลฯ) ระหว่างกระบวนการที่ติดตามและพาเรนต์จะไม่ถูกรักษาไว้
เว้นแต่ -D ถูกนำมาใช้.
เมื่อใช้ -p, สถานะการออกของ สเตรซ เป็นศูนย์เว้นแต่จะมี
เป็นข้อผิดพลาดที่ไม่คาดคิดในการติดตาม
เซทูอิด การติดตั้ง
If สเตรซ ติดตั้ง setuid ไปที่รูทจากนั้นผู้ใช้ที่เรียกใช้
จะสามารถแนบและติดตามกระบวนการที่เป็นของผู้ใช้คนใดก็ได้
นอกจากนี้ โปรแกรม setuid และ setgid จะถูกดำเนินการและ
ติดตามด้วยสิทธิพิเศษที่มีประสิทธิภาพที่ถูกต้อง เนื่องจากผู้ใช้เท่านั้น
ที่เชื่อถือได้ด้วยสิทธิ์รูทเต็มรูปแบบควรได้รับอนุญาตให้ทำสิ่งเหล่านี้
สิ่งต่าง ๆ มันสมเหตุสมผลที่จะติดตั้ง สเตรซ เป็น setuid เพื่อรูท
เมื่อผู้ใช้ที่สามารถดำเนินการได้จะถูก จำกัด เฉพาะผู้ใช้เหล่านั้น
ที่มีความไว้วางใจนี้ ตัวอย่างเช่น เหมาะสมที่จะติดตั้ง a
รุ่นพิเศษของ สเตรซ ด้วยโหมด 'rwsr-xr--' ผู้ใช้ ราก และ
กลุ่ม ติดตามโดยที่สมาชิกของ ติดตาม กลุ่มเป็นผู้ใช้ที่เชื่อถือได้
หากคุณใช้คุณลักษณะนี้ โปรดอย่าลืมติดตั้งโปรแกรมที่ไม่ใช่
เวอร์ชัน setuid ของ สเตรซ ให้ผู้ใช้ทั่วไปใช้
ใช้ strace64 ออนไลน์โดยใช้บริการ onworks.net
