উত্তর:
হ্যাঁ, এখানে ব্যাশ ডিবাগার প্রকল্প রয়েছে ।
আপনি ব্যবহার করতে পারেন set -x
এবং set -v
কার্যকর করতে পারেন । অধিক তথ্য:
http://www.linuxtopia.org/online_books/advanced_bash_scriptting_guide/debugging.html http://www.cyberciti.biz/tips/debugging- Shell- script.html
শুভকামনা!
বিভিন্ন উপায় আছে, যেমন:
-X বিকল্পের সাহায্যে আপনার স্ক্রিপ্টটি চালান
bash -x yourscript.sh
যোগ set -x
কুঁড়েঘর পরে আপনার স্ক্রিপ্ট শুরুতে একটি নতুন লাইন #!/bin/bash
এবং আপনার স্ক্রিপ্টের শুরুর আগে, set -v
শেল ইনপুট লাইন, নিজেদের প্রদর্শন করবে set -x
প্রদর্শন মৃত্যুদন্ড কার্যকর কমান্ড এবং আর্গুমেন্ট
এর সাথে আপনার স্ক্রিপ্ট ফাইলের শেবাং প্রতিস্থাপন করুন #!/bin/bash -xv
আজকাল, ভিজ্যুয়াল স্টুডিও কোড ব্যাশ ডিবাগ এক্সটেনশন রয়েছে । এটিতে 'স্টেপ ইন / আউট / আউট' রয়েছে এবং প্রতিটি ভেরিয়েবলের মান দেখাতে পারে।
শেলচেক শহরে সেরা -
আপনি ভিমের সাথে সংহতও করতে পারেন, এখানে গিট রেপো -
"কনসোল" এ নেমে আপনি এই ছোট ফাংশনটি ব্যবহার করতে পারেন:
function debug
{
echo "#############| Entering DEBUG mode |####################";
cmd=""
while [[ $cmd != "exit" ]]; do
read -p "> " cmd
case "$cmd" in
vars ) ( set -o posix ; set );;
exit ) ;;
* ) eval "$cmd";;
esac
done
echo "#############| End of DEBUG mode |####################";
}
তারপরে, আপনার স্ক্রিপ্টের অভ্যন্তরে (উদাহরণ):
for file in *; do
...
if [[ $file == "strange_case.txt" ]]; then
# break the code here to analyze:
debug
fi
...
done
এটি স্থানীয় ভেরিয়েবল অক্ষত রেখে যে কোনও কমান্ড গ্রহণ করবে। "ডিবাগ" মোডে প্রস্থান করতে, "প্রস্থান" টাইপ করুন (এটি স্ক্রিপ্ট থেকে প্রস্থান করবে না) এবং এটি কোড সহ চালিয়ে যাবে। আপনি যদি কোনও লুপের ভিতরে "ডিবাগ" ব্যবহার করেন তবে এটি প্রতিবার বন্ধ হয়ে যাবে। আপনি এটিকে "যদি" (উপরের উদাহরণের মতো) এর মধ্যে গুটিয়ে রাখতে পারেন, বা একটি "ঘড়ি" ফাংশন তৈরি করতে পারেন:
function debug_watch
{
if [[ $1 == $2 ]]; then
debug
fi
}
# And Use it:
debug_watch "$file" "strange_case.txt"
আমি "ভার্সন" কমান্ডও যুক্ত করেছি যা সমস্ত উপলব্ধ ভেরিয়েবল এবং তাদের মানগুলিকে ডাম্প করবে। আপনি নিজের কাস্টমাইজড কমান্ডগুলিও যুক্ত করতে পারেন।
আমি কয়েক মিনিটের মধ্যে কোডটি করেছি তাই এটি আপনার নিজের ঝুঁকিতে ব্যবহার করুন। সচেতন থাকুন যে ডিবাগ মোডে যে কোনও কমান্ড কার্যকর করা যেতে পারে, সুতরাং এটি আপনি কোনও প্রোডাক্ট স্ক্রিপ্টে রেখে দিলে এটি একটি সুরক্ষা ঝুঁকি তৈরি করে।
এনইএস যা বলছে তার সুরে ডিবাগিংয়ের জন্য ব্যাশগুলিতে সেট পতাকা রয়েছে।
set -x
পতাকা সেট করতে পারেন হবে এবং সেট না পারেন টার্মিনাল থেকে, বা আপনার স্ক্রিপ্ট থেকে। ব্যবহার +
বা -
:
#!/bin/bash
#fileinfo
ls -l $1
set -x # start debugging here
wc -l $1
set +x # stop debugging here
file $1
set -v # start verbose output
w | more
echo ""
echo -n "Number of users: "
set +v # end verbose output
who | wc -l
set
কমান্ডগুলি এখানে যা করে :
set -f
মেটাচার্যাক্টর ব্যবহার করে ফাইলের নাম উত্পাদন নিষ্ক্রিয় করুন।set -v
(ভার্বোস) শেল ইনপুট লাইনগুলি পড়ার সাথে সাথে প্রিন্ট করে।set -x
কমান্ড কার্যকর করার আগে মুদ্রণ কমান্ড ট্রেস করে।set
বাস্তবে অনেকগুলি বৈশিষ্ট্য রয়েছে তবে দুর্ভাগ্যক্রমে কোনও ম্যান পৃষ্ঠা নেই কারণ এটি সরঞ্জামটিতে নির্মিত শেল। সেটটির জন্য ম্যানুয়ালটি জিএনইউ বাশ ডকুমেন্টেশনে রয়েছে ।
এমন অনেক কমান্ড লাইনের সরঞ্জাম রয়েছে যা আপনাকে আপনার প্রোগ্রাম সম্পর্কে বিশদ অর্জনে সহায়তা করতে পারে যেমন:
stat
ফাইল বা ফাইল সিস্টেমের স্থিতি প্রদর্শন করুন file
একটি ফাইল টাইপ নির্ধারণ করুন।hexdump
ফিল্টার যা বিভিন্ন ফর্ম্যাটে নির্দিষ্ট ফাইলগুলি প্রদর্শন করেnohup
একটি স্ক্রিপ্ট চালান যা স্থির হবে না
এবং আরও অনেক। আমি কমান্ডটি ভাবতে চেষ্টা করেছি যা লুকানো অক্ষরগুলি দেখায়, তবে আমি এখনই এটি করতে পারি না। হেক্সডাম্প এটি করবে তবে এর চেয়ে আরও ভাল একটি রয়েছে।
কী কমান্ডটি ctrl\একটি চলমান প্রোগ্রাম বা স্ক্রিপ্টকে কোর ডাম্পের কারণ করে। তারপরে আপনি কর্ডাম্প বিশ্লেষণ করতে পারেন। আমি সম্ভবত একটি কোরেডাম্প বিশ্লেষণ করতে জিডিবি ব্যবহার করব তবে তার জন্য অনেকগুলি প্রোগ্রাম বিদ্যমান।
ব্যাশ শেলের ডিবাগিংয়ের জন্য কিছু নিফটি বিকল্প রয়েছে। আপনাকে সহায়তা করার জন্য বিকল্পগুলি --debugger
, -v
ভার্বোজ --dump-strings
এবং অন্যান্য নিফটি বিকল্পগুলি। তাদের ব্যবহার করে দেখুন man bash
।
trap
কমান্ড (সালে নির্মিত শেল) আপনার জন্য খুবই সহায়ক হতে পারে। ফাঁদ বলে যদি আপনার প্রোগ্রামটি অপ্রত্যাশিতভাবে প্রস্থান করে, কিছু কার্যকর করুন। আপনি অন্যান্য কুশলী ব্যাশ শেল builtins ফাঁদ সম্পর্কে পড়ুন, এবং এখানে ।
এই মুহুর্তের জন্য সাধারণত বললে, ডিবাগিং যে কোনও ভাষায় একটি বিশাল বিষয়। কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজে ডিবাগিংয়ের জন্য কার্যকর হতে পারে এমন আরও কয়েকটি বিষয় অন্তর্ভুক্ত রয়েছে, শেল পুনর্নির্দেশ এবং, সিগন্যাল প্রক্রিয়াজাতকরণ।
পরিশেষে, আমি বুঝতে পারি যে আমি ব্যবহার করি উদাহরণটি তুচ্ছ, তবে কিছু শেল স্ক্রিপ্ট শত শত লাইন হতে পারে। এই পরিস্থিতিতে, আমি হয় মন্তব্য ট্যাগগুলি সন্নিবেশ করানো এবং ব্লক আউট কোডটি ত্রুটিযুক্ত বলে সন্দেহ করি বা বিকল্পভাবে, একটি প্রস্থান কমান্ড সন্নিবেশ করান, এবং একটি বিভাজন এবং বিজয় কৌশল ব্যবহার করে ভাঙ্গা কোড থেকে কার্যকরী কোডটি বিচ্ছিন্ন করার চেষ্টা করি।
ব্যাশ স্ক্রিপ্ট ডিবাগ করার জন্য একটি জিইউআই বিকল্প হ'ল বাশEclipse / শেলড প্লাগইন সহ Eclipse IDE।
এটি breakpoints and stuff
জটিল বাশ স্ক্রিপ্টগুলি ডিবাগ করার জন্য অন্যান্য বৈশিষ্ট্যগুলির হোস্টের সাথে আপনার প্রশ্নের বৈশিষ্ট্যগুলি ( ) সরবরাহ করে।
বৈশিষ্ট্যগুলির মধ্যে কিছু রয়েছে:
( https://unix.stackexchange.com/questions/155551/how-to-debug-a-bash-script )
স্ক্রিপ্ট সম্পাদক দৃষ্টিভঙ্গি:
ব্যবহার করার জন্য পদক্ষেপ যোগ হয় Shelled
এবং BashEclipse
গ্রাস pluggins। তারপরে ডিবেগার শুরু করার জন্য আমাকে পাঠ্য ফাইলটি পড়ুন বাশএক্লিপসে প্রদত্ত পদ্ধতিটি চালান।
* ) eval "$cmd" ;;
এবংdebug_watch "$file" strange_case.txt
।