strace

ภาพหน้าจอของซอฟแวร์:
strace
รายละเอียดซอฟแวร์:
รุ่น: 4.19 การปรับปรุง
วันที่อัพโหลด: 23 Nov 17
การอนุญาต: ฟรี
ความนิยม: 23

Rating: 5.0/5 (Total Votes: 1)

strace เป็นซอฟต์แวร์แบบโอเพ่นซอร์สและแจกจ่ายได้อย่างอิสระที่ออกแบบมาสำหรับนักพัฒนาซอฟต์แวร์และผู้ดูแลระบบโดยให้ตัวติดตามการเรียกค้นระบบที่ติดตั้งใน C และออกแบบมาเพื่อใช้งานเฉพาะภายใต้ระบบปฏิบัติการ GNU / Linux

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

เครื่องมือนี้สามารถใช้โดยเครื่องมือวินิจฉัยปัญหารวมถึงผู้ดูแลระบบที่ต้องการโซลูชันล้ำค่าสำหรับการแก้ปัญหาเกี่ยวกับโปรแกรมแหล่งที่มาแบบปิด เขียนโดย Dmitry V. Levin, Roland McGrath และ Wichert Akkerman


ตัวเลือกบรรทัดคำสั่ง

เช่นเดียวกับซอฟต์แวร์บรรทัดคำสั่งอื่น ๆ strace มีตัวเลือกบรรทัดคำสั่งมากมายให้ผู้ใช้สามารถใช้งานฟังก์ชันและคุณลักษณะทั้งหมดได้อย่างง่ายดายเพื่อให้บรรลุผลงานของพวกเขา คุณสามารถดูตัวเลือกบรรทัดคำสั่งทั้งหมดได้อย่างรวดเร็วโดยเรียกใช้ & quot; strace --help & rsquo; คำสั่ง.

ในบรรดาตัวเลือกบรรทัดคำสั่งที่น่าสนใจที่สุดเราสามารถพูดถึงการสนับสนุนสำหรับการนับครั้งการโทรและข้อผิดพลาดในแต่ละ syscall การสนับสนุนสำหรับการสรุปค่าแฝง syscall สนับสนุนการติดตามการเข้าถึงเส้นทางบางอย่างการสนับสนุนสำหรับการเปิดใช้งานการแก้ปัญหาเอาต์พุตไปยัง stderr, เช่นเดียวกับการสนับสนุนการเรียกใช้กระบวนการสืบค้นข้อมูลเป็นหลานคนเดียวไม่ได้เป็นผู้ปกครอง

นอกจากนี้คุณจะสามารถส่งข้อมูลการสืบค้นกลับไปยังไฟล์ที่ระบุแทน stderr เพื่อตั้งค่าใช้จ่ายสำหรับการติดตาม syscalls ไปยัง usecs ค่าใช้จ่ายเพื่อตั้งค่าไฟล์ PID สำหรับกระบวนการสืบค้นข้อมูลเพื่อจำกัดความยาวของสตริงการพิมพ์ เพื่อใช้คำสั่ง strsize chars เพื่อเรียกใช้คำสั่งชื่อผู้ใช้จัดการ setgid และ / หรือ setuid และแยกออกจาก syscall ที่เฉพาะเจาะจง


เริ่มต้นกับ strace

strace มีการแจกจ่ายเฉพาะเป็น tarball ต้นทาง แต่สามารถติดตั้งได้ง่ายจากการกระจาย Linux จำนวนมากจากที่เก็บซอฟต์แวร์หลักของตน หากต้องการติดตั้งจากแหล่งข้อมูลเพียงดาวน์โหลดเวอร์ชันล่าสุดจาก Softoware เก็บข้อมูลที่จัดเก็บไว้ในตำแหน่งที่คุณเลือกและแกะออก

เปิดแอป Terminal จากตำแหน่งของไฟล์ที่แยกแล้ว (เช่น cd /home/softoware/strace-4.9) เรียกใช้ ./configure && make & rsquo; คำสั่งเพื่อกำหนดค่าและรวบรวมข้อมูล strace จากนั้นรันคำสั่ง & lsquo; make install & rsquo; คำสั่งเป็น root หรือ & lsquo; sudo make install & rsquo;

มีอะไรใหม่ ในรุ่นนี้:

  • การปรับปรุง:
  • เพิ่ม --yy ตัวเลือกในการพิมพ์โปรโตคอลและข้อมูลที่อยู่ที่เกี่ยวข้องกับตัวบ่งชี้ซ็อกเก็ต
  • อ่านต่อ & quot; e read = set & quot; และ & quot; -e write = set & quot; ตัวเลือกเพื่อครอบคลุม sendmsg, recvmsg, sendmmsg และ recvmmsg syscalls
  • ดำเนินการถอดรหัสคำสั่ง ioctl แบบ 32 บิตแบบเต็มรูปแบบ (ระบุข้อบกพร่องของ Debian # 692913 และข้อผิดพลาด Fedora # 902788)
  • ดำเนินการสนับสนุน API PTRACE_GETREGS ในวันที่ 64 ปี
  • ใช้การสนับสนุน API PTRACE_GETREGS บน mips
  • ดำเนินการสนับสนุน PTRACE_GETREGSET API ใน s390 / s390x
  • ดำเนินการถอดรหัสระบบคอมพริชัน getrandom และ seccomp
  • ดำเนินการถอดรหัสเต็มรูปแบบของชุดความสามารถแบบ 64 บิต
  • ดำเนินการถอดรหัสคำสั่ง prctl ทั้งหมด
  • ดำเนินการถอดรหัสคำสั่ง parametrized ioctl
  • ดำเนินการถอดรหัสคำสั่ง evoev ioctl
  • ดำเนินการถอดรหัสคำสั่ง ioctl v4l
  • ดำเนินการถอดรหัสคำสั่ง ioctl SG_IO v4
  • ดำเนินการถอดรหัสคำสั่ง ioctl ของ FIFREEZE / FITHAW / FITRIM
  • ดำเนินการถอดรหัส FALLOC_FL_ * flag ตกใจ
  • ดำเนินการถอดรหัสของหน้ากากสัญญาณ rt_sigreturn ใน aarch64, x32 และ x86_64
  • ตัวถอดรหัสซ็อกเก็ตที่ปรับปรุงเพื่อสนับสนุนซ็อกเก็ตบลูทู ธ
  • การถอดรหัสที่เพิ่มขึ้นของคำสั่ง ioctl ที่ไม่แสดง
  • การถอดรหัสที่เพิ่มขึ้นของ getsockopt และ setsockopt syscall
  • การถอดรหัสที่เพิ่มขึ้นของ sysinfo syscall
  • การถอดรหัสที่เพิ่มขึ้นของ struct cmsghdr
  • การถอดรหัสสถานะรอที่ดีขึ้น
  • การสนับสนุน aio ที่ปรับปรุงแล้วในสถาปัตยกรรมที่ไม่ใช่ x86 โดยใช้ libaio.h ภายนอก
  • เพิ่ม O_TMPFILE ในรายการแฟล็กโหมดเปิดที่รู้จัก
  • อัปเดตรายการค่าคงที่ของระบบไฟล์ที่ใช้ในการถอดรหัส statys ครอบครัวของ statfs
  • อัปเดตรายการ CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * และค่าคงที่ของ TFD_ * แล้ว
  • อัปเดตรายการค่าคงที่สัญญาณจาก Linux 3.19 แล้ว
  • อัปเดตรายการค่าคงที่ errno จาก Linux 3.19
  • อัปเดตรายการคำสั่ง ioctl จาก Linux 3.9 แล้ว
  • เพิ่มรายการ syscall ใหม่เพื่อให้ตรงกับ Linux 3.19
  • การแก้ไขข้อบกพร่อง:
  • แก้ไขข้อผิดพลาดต่างๆในการทำแผนที่ระหว่างหมายเลข syscall และข้อมูลที่เกี่ยวข้องเช่นจำนวนอาร์กิวเมนต์ syscall ชื่อ syscall และตัวถอดรหัส syscall
  • แก้ไขปัญหาการอ้างอิงใน descriptors การพิมพ์ชื่อไฟล์ชื่อเครือข่ายอินเตอร์เฟสชื่อ struct utsname ชื่ออุปกรณ์ / ปริมาณของคำสั่ง BLK * ioctl
  • แก้ไขการถอดรหัส uid_t / git_t
  • แก้ไขปัญหาที่อยู่นอกขอบเขตของปัญหาในตัวถอดรหัส getdents / getdents64
  • แก้ไขการตัดทอนธงที่เปิดโอกาสในสถาปัตยกรรมบางอย่าง
  • แก้ไขการถอดรหัสของ struct ifreq.ifr_name
  • แก้ไขการถอดรหัสคำสั่ง ioctl SIOCSIFNAME
  • แก้ไขการถอดรหัส RENAME_ * renameat2 flags
  • แก้ไขการถอดรหัสโครงสร้างเวลาแบบ UTIME_NOW / UTIME_OMIT
  • แก้ไขการถอดรหัส subcalls ipc ทางอ้อมบนสถาปัตยกรรมบางส่วน
  • แก้ไขการถอดรหัสของ fanotify_mark syscall ในสถาปัตยกรรม 32 บิต
  • แก้ไขการถอดรหัสโครงสร้างโครงสร้างแบบ 32 บิตบนสถาปัตยกรรม 64 บิต
  • แก้ไขการถอดรหัส cmsghdr โครงสร้างแบบ 32 บิตบนสถาปัตยกรรม 64 บิต
  • แก้ไขการถอดรหัส preadv / pwritev 32 บิตสำหรับสถาปัตยกรรม 64 บิต
  • แก้ไขการถอดรหัสของหน้าปัดสัญญาณ sigreturn / rt_sigreturn บน ia64, ppc, ppc64, sparc, sparc64, mips และ s390
  • เอาต์พุตตัวชี้คำสั่งคงที่ (-i option) บนสถาปัตยกรรมที่สนับสนุนหลายบุคลิกภาพ
  • แก้ไขพฤติกรรมของ & quot; e read = set & quot; และ & quot; -e write = set & quot; เมื่ออ่านและเขียนชุดตัดกัน
  • สร้างคงที่ในระบบที่ struct sigaction ไม่มีสมาชิก sa_restorer
  • สร้าง Fixed ด้วย uclibc และ musl libc
  • Portability:
  • ต้องใช้เคอร์เนลลินุกซ์ & gt; = 2.5.46 รุ่นเก่ากว่าโดยไม่สนับสนุน PTRACE_SETOPTIONS ที่ดีจะไม่ทำงาน
  • ใน mips ต้องมี kernel linux & gt; = 2.6.15 รุ่นเก่ากว่าโดยไม่สนับสนุน PTRACE_GETREGS ที่ดีจะไม่ทำงาน
  • ใน s390 และ s390x ต้องมี kernel linux & gt; = 2.6.27 รุ่นเก่าที่ไม่มีการสนับสนุน PTRACE_GETREGSET ที่ดีจะไม่ทำงาน

  • มีอะไรใหม่ ในเวอร์ชัน 4.9:

    • การเปลี่ยนแปลงพฤติกรรม:
    • ปิดใช้งานการสนับสนุน OABI ในระบบ ARM EABI ตามค่าดีฟอลต์เพิ่มตัวเลือก --enable arm armo-oabi เพื่อให้สามารถกำหนดค่าได้ตามเวลา
    • การปรับปรุง:
    • เพิ่มตัวเลือกการทดลอง -k เพื่อพิมพ์ข้อมูลการสืบค้นกลับของสแต็คหลังจากที่ใช้ syscall ที่สืบค้นแต่ละครั้ง
    • เพิ่มตัวเลือก -w เพื่อสร้างสถิติเกี่ยวกับเวลาแฝงของ syscall (ระบุข้อบกพร่องของ Debian # 457497)
    • เพิ่มการสนับสนุนสถาปัตยกรรม ARC
    • เพิ่มการสนับสนุน PTRACE_GETREGS API บน PowerPC
    • รองรับ Bionic libc และ musl libc ที่ได้รับการปรับปรุง
    • การติดตามขั้นตอนเกี่ยวกับบุคลิกภาพแบบ x86 ที่เพิ่มขึ้นใน x86_64 และ x32
    • การติดตามขั้นตอนบุคลิกภาพของ ARM ที่มีประสิทธิภาพขึ้นบน AArch64
    • การตรวจหาบุคลิกภาพ 32 / 64bit ที่มีประสิทธิภาพใน PowerPC
    • ดำเนินการถอดรหัสของ add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 และ request_key syscalls
    • การถอดรหัสที่มีประสิทธิภาพของระบบเลือก, pselect และ io_submit
    • การถอดรหัสที่เพิ่มขึ้นของ delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns และ sync_file_range syscalls
    • การถอดรหัสสัญญาณ bitmasks ที่เพิ่มขึ้น
    • การถอดรหัสไฟล์ descriptors ที่เพิ่มขึ้น
    • การถอดรหัส siginfo_t ที่ปรับปรุงใหม่
    • การถอดรหัส PF_NETLINK ที่ปรับปรุงแล้ว
    • อัปเดตค่าคงที่ CLOCK_ * (แก้ไขบั๊ก Fedora # 1088455)
    • เพิ่มรายการ syscall ใหม่เพื่อให้ตรงกับ Linux 3.16
    • การแก้ไขข้อบกพร่อง:
    • เพิ่ม shmat และ shmdt ไปยังชุดข้อมูลการทำแผนที่ที่เกี่ยวข้องกับหน่วยความจำ
    • แก้ไขการแยกออกจากกระบวนการที่หยุดทำงาน
    • แก้ไขการถอดรหัสพัดลมแก้ปัญหาเกี่ยวกับสถาปัตยกรรม 32 บิต
    • แก้ไขการถอดรหัสในระบบ preadv และ pwritev
    • เลือกการถอดรหัสคงที่สำหรับ glibc ในโหมด _FORTIFY_SOURCE
    • แก้ไขการถอดรหัสของ epson_calendar_slccal ด้วยอาร์กิวเมนต์ EPOLL_CTL_DEL
    • สร้างช่วงเวลาและข้อขัดแย้ง (แก้ไขบั๊ก Fedora # 993384)
    • การแก้ไขเบ็ดเตล็ดในหน้าคู่มือ (ที่อยู่ Debian bug # 725987)

    • มีอะไรใหม่ ในเวอร์ชัน 4.8:

      • การเปลี่ยนแปลงพฤติกรรม:
      • ในกรณีที่มีการยุติสายพานลำเลียงปกติเมื่อมีการเปลี่ยนเส้นทางการส่งผ่านข้อมูลไปยังท่อให้รัดปิดและรอการสิ้นสุดกระบวนการท่อก่อนออก
      • การปรับปรุง:
      • ติดตามการใช้งานโดยใช้ API PTRACE_SEIZE (ถ้ามี)
      • ดำเนินการตรวจหาบุคลิกภาพกระบวนการของ PTRACE_GETREGSET ที่เชื่อถือได้มากขึ้นบน x86-64 และ x32 (หากมี)
      • เพิ่ม -e trace = ตัวเลือกหน่วยความจำสำหรับสืบค้นข้อมูล syscalls ที่เกี่ยวข้องกับการทำแผนที่หน่วยความจำ
      • เอกสาร -b ตัวเลือก
      • อนุญาตให้มีข้อความสถานะสถานะทางออกที่จะถูกระงับโดยให้ตัวเลือก -q สองครั้ง
      • เพิ่มการสนับสนุนสถาปัตยกรรม AArch64 (ระบุข้อบกพร่อง Debian # 693074 และข้อบกพร่อง Fedora # 969858)
      • เพิ่มการสนับสนุน OpenRISC 1000, Meta และสถาปัตยกรรม Xtensa
      • เพิ่มการสนับสนุนบุคลิกภาพ tilegx สำหรับ Tile
      • การสนับสนุนสถาปัตยกรรม NOMMU ที่เพิ่มขึ้น
      • การถอดรหัสที่เพิ่มขึ้นของ getdents, mmap, perf_event_open, ptrace และ quotactl syscalls
      • เพิ่มรายการ syscall ใหม่เพื่อให้สอดคล้องกับ Linux 3.9
      • สร้างรายชื่อชื่อ ioctl จาก Linux 3.9 ขึ้นใหม่
      • อัปเดตรายการค่าคงที่ errno แล้ว
      • อัปเดตรายการของ AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * และค่าคงที่ TCP_ *
      • ดำเนินการถอดรหัส UIO ioctls
      • นำออกซ้ำซ้อน & quot; * 32 & quot; ชื่อ ioctl
      • การแก้ไขข้อบกพร่อง:
      • แก้ไข ERESTARTNOINTR ที่รั่วไปยังผู้ใช้ในแวดวงโบราณ (แก้ไขบั๊ก Fedora # 659382)
      • การแยกวิเคราะห์สายอักขระการแจกจ่ายเคอร์เนล (แก้ไขบั๊ก Debian # 702309)
      • แก้ไขการถอดรหัส * xattr syscalls (ระบุข้อบกพร่อง Fedora # 885233)
      • จัดการไฟล์ที่มีหมายเลขไอโหนด 64 บิตโดยใช้สายอักขระ 32 บิต (ระบุข้อบกพร่อง Fedora # 912790)
      • แก้ไขฟอร์กการสืบค้นข้อมูลบน SPARC
      • แก้ไขการถอดรหัสของ fadvise64, fallocate, ftruncate64, io_submit, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl และ truncate64 syscalls
      • แก้ไขประเภทของ syscalls หลายส่วนบนสถาปัตยกรรมที่สนับสนุนส่วนใหญ่
      • แก้ไขการถอดรหัสอักขระที่ไม่ใช่ภาษาพื้นเมือง 32 บิต recv [m] msg syscalls
      • แก้ไขการถอดรหัส syscalls บุคลิกภาพแบบ 32 บิตหลายแบบบน x32
      • แก้ไขการถอดรหัสอาร์กิวเมนต์ syscall ที่ยาวนานบน ARM, MIPS / o32, PowerPC, S390x และสถาปัตยกรรม Tile
      • แก้ไขการถอดรหัส semtimedop บน S390x
      • แก้ไขการถอดรหัส sram_alloc บน Blackfin
      • แก้ไขการสร้างเมื่อ process_vm_readv เป็น stab
      • สร้างเวอร์ชันคงที่โดยใช้ libaio.h เก่ากว่านี้

      มีอะไรใหม่ ในเวอร์ชัน 4.7:

      • นี่เป็นเวอร์ชันที่มีเสถียรภาพพร้อมด้วย bugfixes ปกติการสนับสนุนที่เพิ่มขึ้นสำหรับเมล็ด Linux ที่ใหม่และอื่น ๆ การปรับปรุง.

      • มีอะไรใหม่ ในเวอร์ชัน 4.6:

        • นี่เป็นเวอร์ชันที่มีเสถียรภาพพร้อมด้วย bugfixes ที่ได้รับการปรับปรุงแล้ว สำหรับ Linux kernel ที่สดใหม่และการปรับปรุงอื่น ๆ รวมถึงวิธีการใหม่ในการทำโคลนส้อมและเวิร์ก syscalls โดยใช้สิ่งอำนวยความสะดวกที่ชัดเจนของ Linux kernel เพื่อติดตามการสร้างเธรดและกระบวนการลูก

        • มีอะไรใหม่ ในเวอร์ชัน 4.5.20:

          • การปรับปรุง:
          • ดำเนินการถอดรหัส syscalls linux ใหม่: inotify_init1, recvmmsg.
          • ดำเนินการถอดรหัสพื้นฐานของ linux syscalls ใหม่: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open
          • การถอดรหัสที่เพิ่มขึ้นของ syscalls ที่เพิ่มเมื่อเร็ว ๆ นี้บนสถาปัตยกรรมที่ไม่ใช่ x86 โดยการแทนที่ตัวถอดรหัสเปลือยกายด้วย parsers ที่ซับซ้อนที่เปิดใช้งานก่อนหน้านี้สำหรับ x86 / x86-64
          • ตัวเลือกที่ดำเนินการ -C เพื่อรวมเอาต์พุตปกติและ -c (ที่อยู่ Debian bug # 466196)
          • การถอดรหัสที่ดีขึ้นของ syscalls mbind และ mremap
          • ตัวเลือกซ็อกเก็ต SOL_PACKET ที่ปรับปรุงแล้วจะถูกถอดรหัส
          • สร้างรายชื่อ ioctl ใหม่จากลินุกซ์ 2.6.33
          • เพิ่มการสนับสนุนสถาปัตยกรรม TILE
          • การแก้ไขข้อบกพร่อง:
          • Fixed build with Linux kernel header 2.6.32-rc5 +. (ที่อยู่ Debian bug # 560516 และข้อผิดพลาด Fedora # 539044)
          • สร้างถาวรบน mips
          • จัดการกับระบบ Linux โดยไม่มี struct statfs64
          • แก้ไขหน้ากากสัญญาณการรายงานโดย sigreturn บน powerpc
          • แก้ไขบัฟเฟอร์หน่วยความจำล้นในตัวเลือก (แก้ไขข้อบกพร่องของ Fedora # 556678)
          • แก้ไขการถอดรหัส ipccall msgsnd โดยทางอ้อม
          • แก้ไขการถอดรหัสของ syscalls 64 บิต (ที่อยู่ Debian bug # 570603)
          • แก้ไขการถอดรหัส getsockopt บนสถาปัตยกรรมที่ sizeof (ยาว) & gt; sizeof (int) (ที่อยู่ Debian bug # 494844)
          • แก้ไขการถอดรหัส epoll_pwait (ที่อยู่ Debian bug # 513014)
          • แก้ไขการจัดการหัวข้อที่ถูกฆ่า

ซอฟต์แวร์ที่คล้ายกัน

radare
radare

11 May 15

interruptingcow
interruptingcow

14 Apr 15

debug
debug

11 May 15

TOra
TOra

2 Jun 15

ความคิดเห็นที่ strace

ความคิดเห็นที่ไม่พบ
เพิ่มความคิดเห็น
เปิดภาพ!
ค้นหาตามหมวดหมู่