কেউ কি টার্মিনাল থেকে একটি চলমান অ্যাপ্লিকেশন নিতে পারেন?


26

ডিবাগ করার জন্য টার্মিনাল থেকে কোনও সময় আমার অ্যাপ্লিকেশন চালানো দরকার। আমি নিশ্চিত যদি অ্যাপ্লিকেশনটি চালু করার পরে বাগটি সংঘটিত হবে তবে আমি এই অ্যাপ্লিকেশনটি টার্মিনাল থেকে চালাতে পারি।

তবে, বাগগুলি অপ্রত্যাশিতভাবে ঘটে থাকে এবং তারপরে কেবলমাত্র টার্মিনাল থেকে বগি অ্যাপ্লিকেশনটি পর্যবেক্ষণ করতে হবে (এর আউটপুটটি দেখার জন্য)।

আমি কি তখন টার্মিনাল থেকে একটি অ্যাপ্লিকেশন নিতে পারি, যা টার্মিনাল ব্যবহার করে চালু করা হয়নি? যদি তাই হয়, কিভাবে?


আমি অবশেষে মাইখেরজারের উত্তরটি গ্রহণ করেছি কারণ এটি ছিল সবচেয়ে শিক্ষণীয়। তবে আপনার সমস্ত উত্তরগুলি ভাল ছিল এবং প্রশংসাও হয়েছিল। চিয়ার্স।
বেঞ্জামিন

পূর্ববর্তী ত্রুটি বার্তাগুলি (stderr) এ লিখিত হয় ~/.xsession-errorsযদি আপনি এটি GUI এর মাধ্যমে চালু করেন।
লেকেনস্টেইন

উত্তর:


30

লিনাক্সের প্রতিটি প্রক্রিয়ার একটি বিশেষ ডিরেক্টরি রয়েছে /proc/{pid}/fd/। 0 টি স্টিডিন, 1 টি স্টাডআউট এবং 2 টি স্টার্ডার। সুতরাং, ধরে নিই যে আপনি কেবল ডায়াগনস্টিক আউটপুটটিতেই আগ্রহী আপনি প্রক্রিয়া পিড নির্ধারণ করতে পারেন, এবং তারপরে টার্মিনালে এটি করুন:

stdout দেখতে:

cat /proc/{pid of process}/fd/1

stderr দেখতে:

cat /proc/{pid of process}/fd/2

ঠিক আছে আমি কিছুটা বিভ্রান্ত, আমি যখন চালনা cat /proc/1840/fd/1করি তখন মনে হয় আমি যে বাছাই করেছি তার থেকে অন্য প্রক্রিয়াগুলি থেকে আউটপুট ফেরত আসবে। (1840 বর্তমানে সিস্টেম মনিটর অনুসারে স্কাইপের জন্য রয়েছে) এটি অন্যান্য প্রোগ্রামের আউটপুটও দেখায় ...: |
বেনিয়ামিন


6

আপনি gdbএকটি চলমান প্রক্রিয়া সাথে সংযুক্ত করতে পারেন ।

বাক্য গঠনটি হ'ল

gdb program pid

ঠিক আছে, আপনি উত্স কোডটি দেখতে পাচ্ছেন না, যদি ডিবাগ তথ্য ছিনিয়ে নেওয়া হয়, যা নিযুক্ত অ্যাপ্লিকেশনগুলির জন্য ডিফল্ট। তবে আপনি সম্ভবত স্টডআউট / স্টডার এবং ডিবাগার বার্তা, সেগফোল্ট দেখতে পাচ্ছেন।


আমি চেষ্টা করেছিলাম কিন্তু এটি কার্যকর হয়নি। উদাহরণস্বরূপ সিস্টেম মনিটর দেখায় কায়রো-ডক আইডি 1452, তাই আমি চালানোর gdb program 1452(আমিও চেষ্টা gdb 1452), কিন্তু এটা ফেরৎ "1452: কোন ধরনের ফাইল অথবা ডাইরেক্টরি।"
বেঞ্জামিন

প্রথম এক কাজ করা উচিত। এটা কি ফিরে এসেছিল?
এনজোটিব

1840 (স্কাইপ) এর জন্য জিজ্ঞাসা করার পরে এটি পুরোপুরি ফিরে আসে:GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory.
বেনিয়ামিন

আমি প্রথমটি বলেছিলাম, এটি দিয়ে gdb program pid। আমি মনে করি আউটপুট আপনাকে হৃদয়ঙ্গম করান থেকেgdb pid
enzotib

দুঃখিত আমার ভুল. `GDB প্রোগ্রাম 3385 (আবার স্কাইপ) ফেরৎ এই
বেঞ্জামিন

5

আপনি সম্ভবত খুঁজছেন retty। আপনি "সংযুক্তি tty" সন্ধান করতে পারেন। মূলত এটি ব্যবহার করে সম্পন্ন হয়েছে ptraceযাতে আপনি এমনকি নিজের রোল করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.