ນີ້ແມ່ນການສ້າງຄໍາສັ່ງທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
creduce - ຕົວຫຼຸດໂປຣແກຣມ C ແລະ C++
ລາຍລະອຽດ
creduce 2.5.0 (ບໍ່ຮູ້ຈັກ) -- ຕົວຫຼຸດໂປຣແກຣມ C ແລະ C++
C-Reduce ຮຽກຮ້ອງໃຫ້ມີ "ການທົດສອບທີ່ຫນ້າສົນໃຈ" ແລະຫນຶ່ງຫຼືຫຼາຍໄຟລ໌ເພື່ອຫຼຸດຜ່ອນ, ເຊິ່ງຕ້ອງເປັນ
ຂຽນໄດ້. ການທົດສອບທີ່ຫນ້າສົນໃຈແມ່ນໂຄງການທີ່ສາມາດປະຕິບັດໄດ້ (ປົກກະຕິແລ້ວເປັນ Shell script) ທີ່
ກັບຄືນ 0 ເມື່ອໄຟລ໌ທີ່ຫຼຸດລົງບາງສ່ວນແມ່ນຫນ້າສົນໃຈ (ຜູ້ສະຫມັກສໍາລັບການຫຼຸດລົງຕື່ມອີກ)
ແລະສົ່ງຄືນທີ່ບໍ່ແມ່ນສູນເມື່ອໄຟລ໌ທີ່ຫຼຸດລົງບາງສ່ວນບໍ່ຫນ້າສົນໃຈ (ບໍ່ແມ່ນຜູ້ສະຫມັກສໍາລັບ
ຫຼຸດລົງຕື່ມອີກ -- ໄຟລ໌ທີ່ບໍ່ສົນໃຈທັງໝົດຈະຖືກຍົກເລີກ).
C-Reduce ດໍາເນີນການທົດສອບຄວາມຫນ້າສົນໃຈຢູ່ໃນໄດເລກະທໍລີຊົ່ວຄາວສົດໆທີ່ມີພຽງແຕ່
ໄຟລ໌ທີ່ຫຼຸດລົງບາງສ່ວນ. ດັ່ງນັ້ນ, ໃນເວລາທີ່ການທົດສອບທີ່ຫນ້າສົນໃຈກວດເບິ່ງບາງສ່ວນ
ໄຟລ໌ທີ່ຫຼຸດລົງ, ມັນຕ້ອງເຮັດແນວນັ້ນໂດຍໃຊ້ເສັ້ນທາງພີ່ນ້ອງກັບໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນ. ສຸດ
ອີກດ້ານຫນຶ່ງ, ເມື່ອການທົດສອບຄວາມຫນ້າສົນໃຈຫມາຍເຖິງໄຟລ໌ໃດໆທີ່ບໍ່ໄດ້ຖືກຫຼຸດລົງ,
ນີ້ຄວນຈະເຮັດໄດ້ໂດຍໃຊ້ເສັ້ນທາງຢ່າງແທ້ຈິງ.
ການທົດສອບຄວາມຫນ້າສົນໃຈບໍ່ຄວນຄາດຫວັງວ່າການໂຕ້ຖຽງເສັ້ນຄໍາສັ່ງໃດໆ. ມັນຄວນຈະເປັນ
ມີຄວາມຕັ້ງໃຈແລະອາດຈະຕ້ອງການບັງຄັບໃຊ້ຂໍ້ຈໍາກັດຂອງຊັບພະຍາກອນກ່ຽວກັບຄໍາສັ່ງຍ່ອຍທີ່ມັນຮຽກຮ້ອງ
(ເຊັ່ນ: ການນໍາໃຊ້ ulimit). ໂດຍສະເພາະ, C-Reduce ແມ່ນເປັນທີ່ຮູ້ຈັກບາງຄັ້ງແນະນໍາອັນເປັນນິດ
loop ເຂົ້າໄປໃນໂຄງການໄດ້ຖືກຫຼຸດລົງ. ເພາະສະນັ້ນ, ຖ້າຫາກວ່າການທົດສອບທີ່ຫນ້າສົນໃຈດໍາເນີນການ
ໂຄງການທີ່ສົມບູນແບບ, ມັນອາດຈະຄວນເຮັດແນວນັ້ນພາຍໃຕ້ການຫມົດເວລາ.
ເປັນຕົວຢ່າງໄວ, ຖ້າທ່ານພິຈາລະນາໄຟລ໌ທີ່ຫນ້າສົນໃຈຖ້າຫາກວ່າ vectorizer ຂອງ GCC ໄຟໄຫມ້
ໃນຂະນະທີ່ລວບລວມມັນ, ທ່ານອາດຈະໃຊ້ການທົດສອບຄວາມຫນ້າສົນໃຈນີ້:
gcc -w -O3 foo.c -S && grep xmm foo.s
ເພື່ອເບິ່ງວ່າການທົດສອບຄວາມຫນ້າສົນໃຈຂອງທ່ານເຮັດວຽກ, ລອງໃຊ້ຄໍາສັ່ງເຫຼົ່ານີ້:
DIR=`mktemp -d` cp file_to_reduce [ທາງເລືອກ, ໄຟລ໌ເພີ່ມເຕີມເພື່ອຫຼຸດຜ່ອນ] $DIR cd $DIR
/path/to/interestingness_test ສະທ້ອນ $?
ອັນນີ້ຄວນສົ່ງຜົນໃຫ້ "0" ຖືກສະທ້ອນໄປຫາເຄື່ອງໝາຍປາຍທາງ. ຖ້າຫາກວ່ານີ້ບໍ່ໄດ້ເກີດຂຶ້ນ, ໄດ້
ການທົດສອບຄວາມຫນ້າສົນໃຈແມ່ນມີຂໍ້ບົກພ່ອງແລະ C-Reduce ຈະບໍ່ສາມາດໃຊ້ມັນໄດ້.
ຖ້າຫາກວ່າທ່ານບໍ່ໄດ້ຂຽນເປັນການທົດສອບທີ່ຫນ້າສົນໃຈກ່ອນ, ກະລຸນາເບິ່ງ tutorial ນີ້ສໍາລັບການ
ຄຳແນະນຳເພີ່ມເຕີມ:
https://embed.cs.utah.edu/creduce/using/
ຖ້າເປັນໄປໄດ້, ເປີດໃຊ້ C-Reduce ໃນລະຫັດທີ່ປຸງແຕ່ງກ່ອນ, ສ້າງຂຶ້ນຕົວຢ່າງໂດຍໃຊ້:
gcc -E -P file.c
ຖ້າທ່ານບໍ່ສາມາດຫຼຸດຜ່ອນລະຫັດທີ່ປຸງແຕ່ງກ່ອນ, ທ່ານສາມາດຫຼຸດຜ່ອນພຽງແຕ່ລະຫັດທີ່ບໍ່ໄດ້ປຸງແຕ່ງກ່ອນ
ໄຟລ໌ຫຼືອື່ນ ໆ ປະຕິບັດການຫຼຸດຜ່ອນຫຼາຍໄຟລ໌ໃນໄຟລ໌ແລະ transitive ຂອງມັນປະກອບມີ (ຫຼື
ຍ່ອຍຂອງເຂົາເຈົ້າ). ໃນກໍລະນີທໍາອິດ, ທ່ານຈໍາເປັນຕ້ອງໄດ້ກໍານົດ CREDUCE_INCLUDE_PATH
ສະພາບແວດລ້ອມທີ່ປ່ຽນແປງໄດ້ກັບບັນຊີລາຍຊື່ທີ່ແຍກກັນແບບຈໍ້າສອງເມັດຂອງປະກອບມີໄດເລກະທໍລີເພື່ອ
clang_delta ເພື່ອຊອກຫາພວກມັນ.
ຖ້າຫາກວ່າການທົດສອບທີ່ຫນ້າສົນໃຈຂອງທ່ານກ່ຽວກັບການ compiler ຂ້າມແລະລັກສະນະຂອງ
ເປົ້າໝາຍຂ້າມແຕກຕ່າງຈາກເຈົ້າພາບ ເຈົ້າຈະຕ້ອງຕັ້ງ CREDUCE_TARGET_TRIPLE ເພື່ອໃຫ້ກົງກັບ
ຂ້າມເປົ້າຫມາຍ. ນີ້ແມ່ນສິ່ງສໍາຄັນໂດຍສະເພາະຖ້າທ່ານກໍາລັງເຮັດວຽກກັບລະຫັດທີ່ບໍ່ໄດ້ປຸງແຕ່ງກ່ອນ
ແລະໃຊ້ CREDUCE_INCLUDE_PATH.
ກົດ "s" ໄດ້ທຸກເວລາເພື່ອຂ້າມໄປຫາ pass ຕໍ່ໄປ (ຄຸນສົມບັດນີ້ຖືກປິດໃຊ້ງານເວັ້ນເສຍແຕ່ Perl.
module Term ::ReadKey ມີຢູ່ໃນລະບົບຂອງເຈົ້າ).
Summary of ຕົວເລືອກ:
--ຕື່ມ-ຜ່ານ
ເພີ່ມບັດທີ່ລະບຸໄວ້ໃນຕາຕະລາງ
-- ຫນ້າສົນໃຈ
ລະຫັດອອກຈາກຂະບວນການ (ບາງບ່ອນຢູ່ໃນຂອບເຂດ 64-113 ຈະເປັນແບບປົກກະຕິ), ເມື່ອໃດ
ກັບຄືນມາໂດຍການທົດສອບທີ່ຫນ້າສົນໃຈ, ຈະເຮັດໃຫ້ C-Reduce ບັນທຶກສໍາເນົາຂອງ
variant [ຄ່າເລີ່ມຕົ້ນ: -1]
--debug
ພິມຂໍ້ມູນດີບັກ
--die-on-pass-bug
ຢຸດ C-Reduce ຖ້າ pass ພົບບັນຫາທີ່ບໍ່ເປັນອັນຕະລາຍ
--ການປັບປຸງສູງສຸດ
ການປັບປຸງທີ່ໃຫຍ່ທີ່ສຸດໃນຂະຫນາດໄຟລ໌ຈາກການຫັນປ່ຽນດຽວທີ່ C-Reduce ຄວນ
ຍອມຮັບ (ເປັນປະໂຫຍດພຽງແຕ່ເຮັດໃຫ້ C-ຫຼຸດລົງຊ້າລົງ)
-- ນ
ຈໍານວນແກນທີ່ຈະໃຊ້; C-Reduce ພະຍາຍາມເລືອກການຕັ້ງຄ່າທີ່ດີໂດຍອັດຕະໂນມັດແຕ່ຂອງມັນ
ທາງເລືອກອາດຈະຕໍ່າເກີນໄປຫຼືສູງສໍາລັບສະຖານະການຂອງເຈົ້າ [ຄ່າເລີ່ມຕົ້ນ: 2]
--no-default-passes
ເລີ່ມຕົ້ນດ້ວຍຕາຕະລາງຜ່ານຫວ່າງເປົ່າ
--ບໍ່ຍອມແພ້
ຢ່າຍອມແພ້ຕໍ່ໃບຜ່ານທີ່ບໍ່ກ້າວໄປອີກ 50000 ເທື່ອ
--nokill
ລໍຖ້າສໍາລັບຕົວຢ່າງຂະຫນານທີ່ຈະຢຸດເຊົາດ້ວຍຕົນເອງແທນທີ່ຈະຂ້າພວກເຂົາ (ພຽງແຕ່
ເປັນປະໂຫຍດສໍາລັບການດີບັກ)
--print-ຄວາມແຕກຕ່າງ
ສະແດງການປ່ຽນແປງທີ່ເຮັດໂດຍການຫັນປ່ຽນ, ສໍາລັບການດີບັກ
--ອະນາໄມ
ພະຍາຍາມປິດບັງລາຍລະອຽດຈາກໄຟລ໌ຕົ້ນສະບັບ
--save-temps
ຢ່າລຶບ /tmp/creduce-x ໄດເລກະທໍລີກ່ຽວກັບການຢຸດເຊົາ
--shadap
ສະກັດກັ້ນຜົນຜະລິດກ່ຽວກັບຄວາມຜິດພາດພາຍໃນທີ່ບໍ່ເປັນອັນຕະລາຍ
--skip-initial-passes
ຂ້າມໃບຜ່ານຂັ້ນຕົ້ນ (ເປັນປະໂຫຍດຖ້າການປ້ອນຂໍ້ມູນຖືກຫຼຸດລົງບາງສ່ວນ)
--skip-key-off
ປິດການຂ້າມສ່ວນທີ່ເຫຼືອຂອງບັດປະຈຸບັນເມື່ອ "s" ຖືກກົດ
--ຊ້າ
ພະຍາຍາມຫຼາຍເພື່ອຫຼຸດຜ່ອນ, ແຕ່ບາງທີອາດໃຊ້ເວລາດົນເພື່ອເຮັດແນວນັ້ນ
-- ເປັນລະບຽບ ຢ່າເຮັດສໍາເນົາສໍາຮອງຂອງແຕ່ລະໄຟລ໌ເພື່ອຫຼຸດຜ່ອນເປັນ file.orig
-- ເວລາ
ພິມເວລາກ່ຽວກັບການຫຼຸດຜ່ອນຄວາມຄືບໜ້າ
ການນໍາໃຊ້: creduce [ທາງເລືອກ] ຫນ້າສົນໃຈ_test file_to_reduce [ທາງເລືອກ, ໄຟລ໌ເພີ່ມເຕີມເພື່ອ
ຫຼຸດຜ່ອນ]
ສ້າງ - ຊ່ວຍ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ
ໃຊ້ creduce ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net