জিডিবিতে একাধিক কমান্ড একরকম ডিলিমিটার দ্বারা পৃথক ';'?


144

আমি জিডিবিতে একবারে দুটি কমান্ড কার্যকর করার চেষ্টা করছি:

finish; next

আমি ';' ব্যবহার করার চেষ্টা করেছি কমান্ড পৃথক করতে কিন্তু জিডিবি আমাকে একবারে দুটি করতে দেয়নি।

';' দ্বারা আলাদা করা বাশ কমান্ডের অনুরূপ জিডিবিতে একাধিক কমান্ড করা কি সম্ভব? বিভেদক?

উত্তর:


179

আমি বিশ্বাস করি না (তবে আমি ভুল হতে পারি)। আপনি এর মতো কিছু করতে পারেন:

(gdb) সংজ্ঞা দেওয়া fn
> শেষ
> পরবর্তী
> শেষ

এবং তারপরে কেবল টাইপ করুন:

(gdb) fn

আপনি এটি আপনার ~/.gdbinitফাইলে রাখতে পারেন যাতে এটি সর্বদা উপলব্ধ।


1
খারাপ পদ্ধতি যখন জিডিবিকে কেবল চালকের স্ট্যাকট্রেস প্রিন্ট করার জন্য ডাকা হয়: execlp("gdb", "gdb", "-batch", "-n", "-ex", "bt full", ...এবং আমি পৃষ্ঠাটি বন্ধ করতে পারি না।
vi।

4
এবং যদি আপনি কীভাবে কোনও ফাংশন সংজ্ঞায়িত করেন তা ভুলে যান তবে আপনি show user <function name>এর উত্সটি দেখতে ব্যবহার করতে পারেন, যেমন show user fn
এনটিসি 2

44

আপনি যদি কমান্ড লাইন থেকে জিডিবি চালাচ্ছেন তবে আপনি-এক্স প্যারামিটারের সাথে একাধিক কমান্ডগুলি পাস করতে পারেন:

$ gdb ./prog -ex 'b srcfile.c:90' -ex 'b somefunc' -ex 'r -p arg1 -q arg2'

এটি প্রদর্শন এবং অন্যান্য কমান্ডের সাথে মিলিতভাবে জিডিবি চালানো কম জটিল করে তোলে।


10

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


5

আপনি পাইথন ইন্টিগ্রেশনটি এটিতে করতে পারেন gdb

এটি ভাল হবে যদি s ; btপদক্ষেপ এবং তারপরে একটি ব্যাকট্র্যাস প্রিন্ট করে তবে তা হয় না।

পাইথন দোভাষীকে কল করে আপনি একই জিনিসটি সম্পাদন করতে পারেন।

python import gdb ; print(gdb.execute("s")) ; print(gdb.execute("bt"))

এটি একটি ডেডিকেট কমান্ডে গুটিয়ে ফেলা সম্ভব, এখানে "সেন্টিমিডস" বলা হয়, এটি পাইথনের সংজ্ঞা দ্বারা সমর্থিত।

.gdbinitএকাধিক কমান্ড চালানোর জন্য একটি ফাংশন সহ এখানে বাড়ানো একটি উদাহরণ ।

# multiple commands
python
from __future__ import print_function
import gdb


class Cmds(gdb.Command):
  """run multiple commands separated by ';'"""
  def __init__(self):
    gdb.Command.__init__(
      self,
      "cmds",
      gdb.COMMAND_DATA,
      gdb.COMPLETE_SYMBOL,
      True,
    )

  def invoke(self, arg, from_tty):
    for fragment in arg.split(';'):
      # from_tty is passed in from invoke.
      # These commands should be considered interactive if the command
      # that invoked them is interactive.
      # to_string is false. We just want to write the output of the commands, not capture it.
      gdb.execute(fragment, from_tty=from_tty, to_string=False)
      print()


Cmds()
end

উদাহরণ প্রার্থনা:

$ gdb
(gdb) cmds echo hi ; echo bye
hi
bye

উজ্জ্বল, যেমন এটি ক্লিপবোর্ড থেকে কমান্ড আটকানো এবং এটি কার্যকর করতে দেয় ute
জিন-ফ্রান্সোইস ফ্যাব্রে

0

আমি বাশ হিয়ার ডকুমেন্টটি ব্যবহার করে জিডিবিতে একাধিক কমান্ড করার জন্য অন্য পথে ছুটলাম।

উদাহরণ:

cat << EOF | gdb
print "command_1"
print "..."
print "command_n"
EOF

এটির মান / ব্যবহারযোগ্যতা সীমিত রয়েছে কারণ জিডিবি কমান্ডগুলির তালিকা কার্যকর করার পরে প্রস্থান করে।

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