ນີ້ແມ່ນຄໍາສັ່ງ latrace ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍສະຖານີເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
latrace - LD_AUDIT 2.4+ libc frontend
ສະຫຼຸບສັງລວມ
latrace [-snltfvhiBdISbcCyYLpoaNADTFERq] ຄໍາສັ່ງ [arg ... ]
ລາຍລະອຽດ
latrace tracer ແມ່ນສາມາດດໍາເນີນການຄໍາສັ່ງແລະສະແດງການເອີ້ນຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວຂອງມັນໂດຍໃຊ້ a
ຄຸນສົມບັດ LD_AUDIT libc, ມີໃຫ້ຕັ້ງແຕ່ libc ເວີຊັ່ນ 2.4 ເປັນຕົ້ນໄປ. ມັນຍັງສາມາດ
ວັດແທກແລະສະແດງສະຖິຕິຕ່າງໆຂອງການໂທແບບເຄື່ອນໄຫວ. ເບິ່ງພາກທີ່ເອີ້ນວ່າ
"ການສົນທະນາ" ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ຖ້າໄຟລ໌ header ທີ່ມີການປະກາດຟັງຊັນໄດ້ຖືກສະຫນອງໃຫ້, latrace ຈະສະແດງ
ການໂຕ້ຖຽງຂອງຫນ້າທີ່. syntax ໄຟລ໌ header ແມ່ນຄ້າຍຄືກັນກັບພາສາ C, ກັບ
ຂໍ້ຍົກເວັ້ນຫຼາຍອັນ ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ “ຫົວ” ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
latrace ໂດຍຄ່າເລີ່ມຕົ້ນຈະດໍາເນີນການຢ່າງເຕັມສ່ວນພາຍໃນໂຄງການຕິດຕາມ. ຢ່າງໃດກໍຕາມ, ອີກ "ທໍ່
ໂຫມດ" ສາມາດໃຊ້ໄດ້ເພື່ອຍ້າຍວຽກຕົ້ນຕໍໄປຫາ tracer - latrace binary. ເບິ່ງ
ພາກສ່ວນທີ່ເອີ້ນວ່າ "PIPE mode" ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ການນໍາໃຊ້ latrace ແມ່ນຄ້າຍຄືກັນກັບ ສາຍແຮ່(1) ແລະ ຮອຍ(1).
OPTIONS
-l, --libs lib1[,lib2,...]
ການກວດສອບຈາກແລະໄປຫາ lib1, lib2 ...
-t, --libs-to lib1[,lib2,...]
ການກວດສອບກັບ lib1, lib2 ...
-f, --libs-from lib1[,lib2,...]
ການກວດສອບຈາກ lib1, lib2 ...
-s, --sym sym1[,sym2,...]
ສັນຍາລັກການກວດສອບ sym1, sym2 ...
-n, --sym-omit sym1[,sym2,...]
omit ສັນຍາລັກ sym1, sym2 ...
-L, --lib-subst s1[,s2,...]
ການໂຕ້ຕອບ objsearch LD_AUDIT (ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ “OBJSEARCH”)
-c, --ນັບ
ສະແດງສະຖິຕິການນັບສັນຍາລັກ - ຫມາຍເຖິງໂຫມດທໍ່ (ເບິ່ງສ່ວນທີ່ເອີ້ນວ່າ "PIPE
ໂຫມດ”) ບໍ່ມີສັນຍາລັກອອກສະແດງ
-C, --sort-counts ສະຖິຕິ
ໝາຍເຖິງ -c, ບວກກັບການຈັດຮຽງສະຖິຕິຕາມສະຖິຕິດ້ວຍຄ່າຕໍ່ໄປນີ້:
ເວລາ, ຕໍ່, ໂທ, ucall, lib, sym (ຄ່າເລີ່ມຕົ້ນແມ່ນການໂທ)
-p, --ທໍ່
ໃຊ້ທໍ່ກັບຂະບວນການ latrace ເພື່ອສົ່ງຂໍ້ມູນການກວດສອບ (ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ "PIPE mode")
-N, --conf
config file (ເບິ່ງພາກເອີ້ນວ່າ "CONFIG")
-A, --enable-args
ເປີດໃຊ້ງານຜົນຜະລິດ arguments (ຄໍານິຍາມຈາກ /etc/latrace.conf)
-D, --detail-args
ສະແດງ struct arguments ໃນລາຍລະອຽດເພີ່ມເຕີມ
-a, --args ໄຟລ໌
ລະບຸໄຟລ໌ຄໍານິຍາມຂອງ arguments, ຫມາຍຄວາມວ່າ -A (ໂດຍບໍ່ມີໄຟລ໌ຄໍານິຍາມໃນຕອນຕົ້ນຂອງ
ຫຼັກສູດ)
-y, --framesize number
framesize ສໍາລັບການເກັບຮັກສາ stack ກ່ອນ pltexit (ຄ່າເລີ່ມຕົ້ນ 100)
-Y, --no-framesize-check
ປິດການກວດສອບຂະຫນາດເຟຣມ
-F, --no-follow-fork
ຢ່າປະຕິບັດຕາມການໂທດ້ວຍສ້ອມ (ເດັກນ້ອຍ). ນີ້ແມ່ນພຽງແຕ່ການສະກັດກັ້ນຜົນຜະລິດ latrace ຈາກໃຫມ່
ເດັກນ້ອຍ. ລັກສະນະຂອງ LD_AUDIT ຄຸນນະສົມບັດປ້ອງກັນການປິດການໃຊ້ງານຢ່າງສົມບູນ.
-E, --no-follow-exec
ຢ່າປະຕິບັດຕາມການໂທ exec
-S, --timestamp
ສະແດງເວລາສໍາລັບແຕ່ລະສັນຍາລັກ
-b, --flow-below sym1[,sym2,...]
ການສະແດງຜົນສໍາລັບ sym1, sym2 ...
-I, --no-indent-sym
ບໍ່ມີສັນຍາລັກຫຍໍ້ຫນ້າໂດຍອີງໃສ່ຄວາມເລິກ stack ຂອງເຂົາເຈົ້າ
-i, --indent-sym indent_size
ຂໍ້ກໍາຫນົດຂະໜາດຫຍໍ້ໜ້າໃນ indent_size
-B, --ວົງເລັບ
ສະແດງຕະຫຼອດ { } ສໍາລັບການປະມານຮ່າງກາຍສັນຍາລັກ
-d, --demangle
C++ demangle ສັນຍາລັກກ່ຽວກັບຜົນຜະລິດໄດ້
-T, --hide-tid
ບໍ່ສະແດງ id thread
-o, --output file
ເກັບຮັກສາຜົນຜະລິດໄປຍັງໄຟລ໌
-R, --ctl-config
ຄຸນນະສົມບັດ config ຄວບຄຸມ
-q, --ປິດການໃຊ້ງານ
ດໍາເນີນການກັບການກວດສອບທີ່ພິການ
-v, --verbose
ຜົນຜະລິດ verbose
-V, - ຫັນ
ສະບັບສະແດງ
-h, --help
ສະແດງການຊ່ວຍເຫຼືອ
ຕົວຢ່າງ
· ວິທີທີ່ງ່າຍທີ່ສຸດໃນການແລ່ນ latrace ແມ່ນແບບນີ້:
cat larace
· ເພື່ອເບິ່ງຄ່າຂອງ argument ທີ່ລະບຸໄວ້ໂດຍການແລ່ນໄຟລ໌ config ເລີ່ມຕົ້ນ:
latrace -A cat
·ຄືກັນກັບຂ້າງເທິງ, ແຕ່ການນໍາໃຊ້ຮູບແບບທໍ່ເພື່ອໃຫ້ໄດ້ສັນຍາລັກສິ້ນສຸດທັງຫມົດທີ່ພິມອອກ:
latrace -Ap cat
· ເພື່ອເບິ່ງຄ່າຂອງ argument ທີ່ລະບຸໂດຍການແລ່ນໄຟລ໌ config ທີ່ລະບຸ:
latrace -a latrace.conf cat
· ເພື່ອໃຫ້ໄດ້ຮັບຜົນຜະລິດພຽງແຕ່ສໍາລັບສັນຍາລັກທີ່ກໍານົດໄວ້ (ເຊັ່ນ: ອ່ານແລະຂຽນ) ແລ່ນ:
latrace -A -s ອ່ານ, ຂຽນ cat
·ເພື່ອໃຫ້ໄດ້ຮັບການໄຫຼພາຍໃຕ້ສັນຍາລັກທີ່ລະບຸໄວ້ (eg. sysconf) ແລ່ນ:
latrace -b sysconf ຂ້າ
· ເພື່ອໃຫ້ໄດ້ຮັບຜົນຜະລິດພຽງແຕ່ສໍາລັບຫ້ອງສະຫມຸດທີ່ກໍານົດໄວ້ (ເຊັ່ນ: libproc) ແລ່ນ:
latrace -Al libproc w
·ເພື່ອໃຫ້ໄດ້ຮັບສະຖິຕິສັນຍາລັກແລ່ນ:
latrace -c ls
·ເພື່ອໃຫ້ໄດ້ຮັບສະຖິຕິສັນຍາລັກຈັດລຽງຕາມການດໍາເນີນການທີ່ໃຊ້ເວລາ:
latrace -C ເວລາ ls
·ເພື່ອໃຫ້ໄດ້ຮັບຜົນຜະລິດເກັບຮັກສາໄວ້ກັບໄຟລ໌ຂໍ້ຄວາມທີ່ດໍາເນີນການ:
latrace -o output.latrace ls
· ການປ່ຽນແປງການຂຶ້ນກັບ libkrava1.so ກັບ libkrava2.so ໃຫ້ດໍາເນີນການຫນຶ່ງໃນເຫຼົ່ານີ້:
latrace -L krava1%krava2 ex
latrace -L krava1~libkrava2.so ex
latrace -L libkrava1.so=libkrava2.so ex
ການສົນທະນາ
ຊື່ CHECK
ສຳ ລັບທາງເລືອກ "-l -t -f -s -n -b" ໄດ້ * ສັນຍາລັກສາມາດຖືກໃຊ້ເພື່ອສະຫຼັບໄປຫາສະຕຣິງຍ່ອຍ
ຄົ້ນຫາ. ຖ້າມັນບໍ່ໄດ້ຖືກລະບຸ, ການຄົ້ນຫາທີ່ແນ່ນອນສໍາລັບຊື່ແມ່ນເຮັດ.
ຕົວຢ່າງ:
-s "*krava" ກວດເບິ່ງສັນຍາລັກທີ່ມີ "krava" substring.
-s "krava" ກວດເບິ່ງພຽງແຕ່ສໍາລັບ "krava" ສັນຍາລັກ
LD_AUDIT
ນີ້ແມ່ນພຽງແຕ່ຄໍາອະທິບາຍສັ້ນໆແລະບໍ່ຊັດເຈນຂອງ LD_AUDIT ຄຸນນະສົມບັດ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ
ເບິ່ງ rtld-ການກວດສອບ(7) ຜູ້ຊາຍເຮັດໂດຍ Petr Baudis ຫຼືສຶກສາລະຫັດແຫຼ່ງ glibc/latrace. ຫຼາຍ
ຄໍາອະທິບາຍສັ້ນໆດັ່ງຕໍ່ໄປນີ້.
ຄຸນນະສົມບັດການກວດສອບຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວ libc ອະນຸຍາດໃຫ້ຕິດຕາມ / ກວດສອບສັນຍາລັກ / ຫ້ອງສະຫມຸດຂອງໂຄງການ.
ຄຸນນະສົມບັດໄດ້ຖືກເປີດໃຊ້ງານໂດຍ LD_AUDIT ສະພາບແວດລ້ອມປ່ຽນແປງ. ຕົວແປນີ້ຕ້ອງມີ
ເສັ້ນທາງໄປຫາຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໃນການກວດສອບ. ຫ້ອງສະໝຸດການກວດສອບນີ້ຕ້ອງປະຕິບັດຕາມສ່ວນຕິດຕໍ່ສະເພາະ.
ຟັງຊັນການໂຕ້ຕອບຈະຖືກເອີ້ນໂດຍຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວຕາມຄວາມເຫມາະສົມ.
ຫ້ອງສະໝຸດການກວດສອບຕ້ອງການສົ່ງອອກສັນຍາລັກຕໍ່ໄປນີ້ (the "la_PLTENTER" ແລະ "la_PLTEXIT"
ຊື່ແມ່ນຂຶ້ນກັບສະຖາປັດຕະຍະກໍາ).
"la_activity"
"la_objsearch"
"la_objopen"
"la_preinit"
"la_symbind32"
"la_symbind64"
"la_PLTENTER"
"la_PLTEXIT"
"la_objclose"
ສໍາລັບຊຸດ latrace, ຫໍສະຫມຸດແບ່ງປັນການກວດສອບແມ່ນເອີ້ນວ່າ libltaudit.so.
OBJSEARCH
ການຄົ້ນຄວ້າ LD_AUDIT ການໂຕ້ຕອບສະຫນອງວິທີການສໍາລັບການປ່ຽນແປງໂຄງການ traced ແບ່ງປັນວັດຖຸ
ຊື່/ສະຖານທີ່. ການໂຕ້ຖຽງທາງເລືອກ -L ຄວນຈະມີຮູບແບບດັ່ງຕໍ່ໄປນີ້:
-L s1[,s2,...] sN ຢູ່ໃສ src [=%~] ງ
ໄດ້ src ແມ່ນຮູບແບບທີ່ມາ / ຊື່ແລະ ງ ແມ່ນຊື່/ຮູບແບບປາຍທາງ.
= ການປຽບທຽບ src ກັບຫ້ອງສະໝຸດ
ຊື່. ຖ້າກົງກັນ, ແທນທີ່
ຊື່ຫ້ອງສະຫມຸດທີ່ມີ dst.
ຊື່ຫ້ອງສະຫມຸດ - /lib/krava1.so
src - /lib/krava1.so
dst - /lib/krava2.so
ຊື່ຫ້ອງສະຫມຸດສຸດທ້າຍ - /lib/krava2.so
% ຊອກຫາ src ໃນຊື່ຫ້ອງສະຫມຸດ. ຖ້າ
ພົບ, ແທນທີ່ src ດ້ວຍສ່ວນ dst.
ຊື່ຫ້ອງສະຫມຸດ - /lib/krava1.so
src - krava1
dst - krava2
ຊື່ຫ້ອງສະຫມຸດສຸດທ້າຍ - /lib/krava2.so
~ ຊອກຫາ src ໃນຊື່ຫ້ອງສະຫມຸດ. ຖ້າ
ພົບ, ປ່ຽນຊື່ຫ້ອງສະໝຸດດ້ວຍ dst.
ຊື່ຫ້ອງສະຫມຸດ - /lib/krava1.so
src - krava1
dst - /lib/krava2.so
ຊື່ຫ້ອງສະຫມຸດສຸດທ້າຍ - /lib/krava2.so
ທໍ່ ຮູບແບບການ
ໄດ້ ເສັ້ນດ່າງ ສາມາດເຮັດວຽກຢູ່ໃນສອງຮູບແບບ. ທໍາອິດ native ບໍ່ຜົນຜະລິດໂດຍກົງໃນ
ຂະບວນການໂຄງການຕິດຕາມ. ອີກອັນນຶ່ງ, ທໍ່ ໂຫມດໃຊ້ກົນໄກ IPC fifo ເພື່ອສົ່ງ
ຂໍ້ມູນຈາກຂະບວນການ traced ກັບຂະບວນການ latrace. ຂະບວນການ latrace ແມ່ນຫຼັງຈາກນັ້ນ
ຮັບຜິດຊອບສໍາລັບຜົນຜະລິດໄດ້. ການນໍາໃຊ້ຮູບແບບທໍ່ທີ່ທ່ານປົດອອກມາດຕະຖານໂຄງການ traced
ບໍລິບົດຜົນຜະລິດທີ່ມີສັນຍາລັກພິມ.
ໂດຍການນໍາໃຊ້ ທໍ່ ຮູບແບບ, latrace ແມ່ນບໍ່ຂຶ້ນກັບໂຄງການຕິດຕາມ
ການນໍາໃຊ້ / ການຫມູນໃຊ້ຂອງຕົວອະທິບາຍຜົນຜະລິດມາດຕະຖານ. ສະຖິຕິສັນຍາລັກຍັງນັບ
-c, -C ທາງເລືອກໃນການ ການນໍາໃຊ້ ທໍ່ ຮູບແບບການໂອນຂໍ້ມູນສັນຍາລັກກັບຖານສອງ latrace, ແລະ
latrace binary ເຮັດການນັບໃນຕອນທ້າຍຂອງ.
ກອງປະຊຸມ
latrace ໃຫ້ຄວາມເປັນໄປໄດ້ທີ່ຈະເປີດ / ປິດການທໍາງານບາງທາງເລືອກໂດຍການ
ໄຟລ໌ການຕັ້ງຄ່າ. ບາງທາງເລືອກແມ່ນເຊື່ອມຕໍ່ກັບການໂຕ້ຖຽງເສັ້ນຄໍາສັ່ງບາງສ່ວນຂອງ
ເຂົາເຈົ້າບໍ່ແມ່ນ. ເມື່ອ latrace ເລີ່ມຕົ້ນ, ໄຟລ໌ການຕັ້ງຄ່າທົ່ວໂລກຈະຖືກອ່ານ. ໄຟລ໌ນີ້ແມ່ນ
ປົກກະຕິແລ້ວຈະຖືກວາງໄວ້ຢູ່ທີ່ນີ້:
/etc/latrace.d/latrace.conf
ມີຄ່າເລີ່ມຕົ້ນທີ່ອ່ານຈາກໄຟລ໌ນີ້, ຜູ້ໃຊ້ສາມາດ overload ໃດໆຂອງພວກເຂົາໂດຍເສັ້ນຄໍາສັ່ງ
ທາງເລືອກຫຼືໂດຍການ supling ໄຟລ໌ config ອື່ນໂດຍຜ່ານ -N, --conf ທາງເລືອກ.
syntax ໄຟລ໌ການຕັ້ງຄ່າແມ່ນປະມານ:
ຮວມ
ຕົວເລືອກ {
OPTION1 = VALUE
OPTION2 = ແມ່ນ|ບໍ່
...
OPTIONN = VALUE
}
# ຄຳເຫັນ
ການຕັ້ງຄ່າ ເອກະສານ ທາງເລືອກໃນການ
Headers = ໄຟລ໌
-a, --args
INDENT_SYM = VALUE
-i, --indent-sym
PIPE = BOOL
-p, --ທໍ່
TIMESTAMP = BOOL
-S, --timestamp
FRAMESIZE = VALUE
-y, --framesize
FRAMESIZE_CHECK = BOOL
-Y, --no-framesize-check
HIDE_TID = BOOL
-T, --hide-tid
FOLLOW_FORK = BOOL
-F, --no-follow-fork
FOLLOW_EXEC = BOOL
-E, --no-follow-exec
DEMANGLE = BOOL
-d, --demangle
BRACES = BOOL
-B, --ວົງເລັບ
ENABLE_ARGS = BOOL
-A, --enable-args
DETAIL_ARGS = BOOL
-D, --detail-args
OUTPUT_TTY = FILE
·ເກັບຮັກສາ tracee terminal output ກັບໄຟລ໌
LIB = LIB1[,LIB2,...]
-l, --libs
LIBS_TO = LIB1[,LIB2,...]
-t, --libs-to
LIBS_FROM = LIB1[,LIB2,...]
-f, --libs-ຈາກ
SYM = SYM1[,SYM2,...]
-s, --sym
SYM_OMIT = SYM1[,SYM2,...]
-n, --sym-omit
SYM_BELOW = SYM1[,SYM2,...]
-b, --flow-ຂ້າງລຸ່ມ
SYM_NOEXIT = SYM1[,SYM2,...]
· ສັນຍາລັກທີ່ບໍ່ມີການດໍາເນີນການອອກ callback (plt_exit)
ARGS_STRING_POINTER_LENGTH = BOOL
· ການໂຕ້ຖຽງຟັງຊັນ - ສະແດງຄວາມຍາວຂອງສະຕຣິງ ແລະຄ່າຕົວຊີ້
ຫົວ
ໄຟລ໌ header latrace ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສາມາດກໍານົດສັນຍາລັກເປັນຫນ້າທີ່ C ຄລາສສິກກັບ
ການໂຕ້ຖຽງ. ຊື່ອາກິວເມັນຈະຖືກສະແດງພ້ອມໆກັນກັບຄ່າທີ່ເປັນຜົນອອກມາຂອງ latrace.
ການໂຕ້ຖຽງຫຼາຍແມ່ນຖືກກໍານົດ, ການປະຕິບັດແລະການລົງໂທດຄວາມຈໍາຫຼາຍຄວນຈະເປັນ
ຄາດວ່າ.
ແພັກເກັດຖືກສົ່ງກັບໄຟລ໌ສ່ວນຫົວທີ່ກໍານົດໄວ້ລ່ວງໜ້າຫຼາຍອັນສໍາລັບການນໍາໃຊ້ທົ່ວໄປທີ່ສຸດ
ຫນ້າທີ່. ບັນຊີລາຍຊື່ຂອງໄຟລ໌ header glibc ທີ່ໃຊ້ຕໍ່ໄປນີ້ (ບັນຊີລາຍຊື່ສ່ວນໃຫຍ່ແມ່ນປະຕິບັດຕາມ ltrace
ບັນຊີລາຍຊື່ໄຟລ໌ header, ແລະຜູ້ຂຽນເຕັມໃຈທີ່ຈະປັບປຸງມັນຕາມຄວາມຕ້ອງການ)
ctype.h dirent.h dlfcn.h fcntl.h getopt.h inet.h ioctl.h
libintl.h libio.h locale.h misc.h mman.h ncurses.h netdb.h
pthread.h pwd.h resource.h signal.h socket.h stat.h stdio.h
stdlib.h string.h syslog.h term.h termios.h time.h typedefs.h
unistd.h utmp.h wait.h
ປົກກະຕິແລ້ວໄຟລ໌ຫົວ latrace ຈະຖືກເກັບໄວ້ພາຍໃຕ້ໄດເລກະທໍລີ:
/etc/latrace.d/headers/
ຜູ້ໃຊ້ສາມາດລະບຸໄຟລ໌ຫົວດຽວໂດຍໃຊ້ຕົວເລືອກແຖວຄໍາສັ່ງຫຼືໄຟລ໌ການຕັ້ງຄ່າ. ນີ້
ໄຟລ໌ຫຼັງຈາກນັ້ນສາມາດປະກອບມີສ່ວນຫົວທີ່ຈໍາເປັນອື່ນໆ. ດັ່ງທີ່ໄດ້ກ່າວມາແລ້ວ, ໄຟລ໌ config latrace
syntax ເລັກນ້ອຍປະຕິບັດຕາມໄວຍະກອນພາສາ C. ພາກສ່ວນຕໍ່ໄປນີ້ອະທິບາຍການຕັ້ງຄ່າ latrace
ພາສາໄຟລ໌.
· ຫຼາຍ POD ປະເພດ (ຂໍ້ມູນເກົ່າທໍາມະດາ), ແມ່ນ hardcoded ໃນ latrace. ຂະຫນາດຂອງການໂຕ້ຖຽງເຫຼົ່ານັ້ນ
ຖືກກໍານົດໂດຍຂະຫນາດຂອງມະຫາພາກ. ບັນຊີລາຍຊື່ດັ່ງຕໍ່ໄປນີ້.
void
char u_char
ສັ້ນ u_short
int u_int
ຍາວ u_long
ຍາວ u_llong # (ຍາວ ຍາວ)
ລອຍສອງເທົ່າ
·ທ ພິມປະເພດ ຄໍາສໍາຄັນອະນຸຍາດໃຫ້ກໍານົດປະເພດໃຫມ່ໂດຍອີງໃສ່ອັນທີ່ມີຢູ່ແລ້ວ (POD
ຫຼື typedefed). ເຖິງແມ່ນວ່າມີວິທີການຫຼາຍຊັ້ນ pointer ໃນປະເພດ
ຄໍານິຍາມ (*), ພຽງແຕ່ຫນຶ່ງແມ່ນປະຕິບັດ.
typedef base_type new_type;
typedef base_type * new_type;
typedef base_type ** new_type;
· ຄວາມຄິດເຫັນ ປະຕິບັດຕາມແບບ C /\* \*/ ຕາມເຫດຜົນ.
/\* ຄຳເຫັນ \*/
·ທ ປະກອບດ້ວຍ ຄໍາສໍາຄັນອະນຸຍາດໃຫ້ປະກອບມີໄຟລ໌ config ອື່ນ.
#ລວມທັງ "ຊື່ໄຟລ໌"
·ທ ໂຄງສ້າງ ຄໍາສໍາຄັນອະນຸຍາດໃຫ້ກໍານົດໂຄງສ້າງ. syntax ປະຕິບັດຕາມໄວຍະກອນ
ກົດລະບຽບ.
START:: ໂຄງສ້າງ NAME { STRUCT_DEF } ;
STRUCT_DEF:: DEF | ຫວ່າງເປົ່າ
DEF:: ຊື່ NAME |
NAME '*' NAME |
ໂຄງສ້າງ NAME NAME |
ໂຄງສ້າງ NAME '*' NAME
NAME:: [-0-9a-zA-Z_]+
·ທ ຫນ້າທີ່ ຄໍານິຍາມປະຕິບັດຕາມ syntax ຕໍ່ໄປນີ້ (DEF ແລະ NAME ແມ່ນຄືກັນກັບສໍາລັບ
ນິຍາມໂຄງສ້າງ).
START:: DEF '(' ARGS ')' ';'
ARGS:: ARGS ',' DEF | DEF | ຫວ່າງເປົ່າ
·ທ enum ຄໍານິຍາມປະຕິບັດຕາມ syntax ຕໍ່ໄປນີ້ (NAME ແມ່ນຄືກັນກັບຄໍານິຍາມໂຄງສ້າງ).
START:: ENUM NAME '{' ENUM_DEF '}' ' ;'
ENUM_DEF:: ENUM_DEF ',' ENUM_ELEM | ENUM_ELEM
ENUM_ELEM:: NAME '=' NAME | NAME
· ຕົວຢ່າງຂອງໄຟລ໌ config latrace ງ່າຍດາຍ.
---[ຕັດຕໍ່]--------------------------------
enum krava {
krava1 = 1,
krava2,
krava3 = 100
};
#ລວມທັງ "krava.conf"
typedef u_int pid_t;
ໂຄງສ້າງ ex_st {
pid_t p ;
int cnt;
char *ຊື່;
};
int f1(pid_t p, ໂຄງສ້າງ ex_st *k);
int f2(char* name, struct ex_st k, int k = krava);
struct ex_st* f3(pid_t *p, struct ex_st k);
---[ຕັດຕໍ່]--------------------------------
· Arrays ຍັງບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນເທື່ອ, ດັ່ງນັ້ນບໍ່ມີວິທີທີ່ຈະກໍານົດໂຄງສ້າງບາງຢ່າງ. ສໍາລັບການດັ່ງກ່າວເປັນ
ໂຄງສ້າງໃຊ້ void* type ບ່ອນທີ່ການໂຕ້ຖຽງໂຄງສ້າງຖືກສົ່ງຜ່ານຕົວຊີ້. ຖ້າຫາກວ່າມັນ
ແມ່ນຜ່ານມູນຄ່າ, ບໍ່ມີການແກ້ໄຂມາເຖິງຕອນນັ້ນ (ນອກຈາກການຕື່ມໂຄງສ້າງ
ຮ່າງກາຍທີ່ມີປະເພດ POD ເຖິງຄວາມຍາວທີ່ແທ້ຈິງຂອງໂຄງສ້າງ :).
· ລາຍຊື່ການໂຕ້ຖຽງຕົວແປ (va_list/...) ຍັງບໍ່ຮອງຮັບເທື່ອ. ນິຍາມຟັງຊັນ
ຈໍາເປັນຕ້ອງຢຸດເຊົາກ່ອນທີ່ຈະເປັນ argument ບັນຊີລາຍຊື່ຕົວແປທໍາອິດ argument.
ປ
latrace ຄວນເຮັດວຽກຢູ່ໃນລະບົບ glibc ໃດໆທີ່ມີການສະຫນັບສະຫນູນ LD_AUDIT. ແນວໃດກໍ່ຕາມການໂຕ້ຖຽງ
ລາຍລະອຽດແມ່ນສະຖາປັດຕະຍະກໍາສະເພາະແລະຕ້ອງການການສະຫນັບສະຫນູນພິເສດພາຍໃນ latrace ຕົວຂອງມັນເອງ.
ຜູ້ຂຽນແມ່ນເຕັມໃຈທີ່ຈະ port latrace ກັບສະຖາປັດຕະໃດກໍ່ຕາມ, ຕາບໃດທີ່ລາວໄດ້ຮັບການເຂົ້າເຖິງ
ລະບົບທີ່ສອດຄ້ອງກັນ. ທ່າເຮືອທີ່ມີປະໂຫຍດໃນປັດຈຸບັນແມ່ນ:
x86 ok
x86_64 ok
ແຂນ ok
ໃຊ້ latrace ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net