كيف يمكنني الحصول على تتبع المكدس في OCaml؟

StackOverflow https://stackoverflow.com/questions/145880

  •  02-07-2019
  •  | 
  •  

سؤال

ستنتج لغة Objective Caml تتبعات المكدس فقط إذا طلبتها بشكل صحيح - ما هي متطلبات كل من الكود الثانوي والتعليمات البرمجية الأصلية؟

هل كانت مفيدة؟

المحلول

ترجمة باستخدام -g وتعيين متغير البيئة OCAMLRUNPARAM=b

نصائح أخرى

بعض برينتيكسك تتيح لك الوظائف القيام بذلك برمجياً.

نظرًا لأنه يبدو أنه لا يمكنك الحصول إلا على آثار للاستثناءات على نظام التشغيل Unix، فيمكنك تفرع الاستثناء ورميه في العملية الثانية.بهذه الطريقة يمكن أن تستمر العملية الرئيسية:

export OCAMLRUNPARAM=b
# compile with -g

flush_all(); let r = Unix.fork() in if r == 0 then raise Exit

إذا كنت تستخدم Ocamlbuild بدلاً من استدعاء المترجم مباشرةً، فيمكنك استخدام التابع debug بطاقة شعار.من يدوي:

باستخدام OCamlbuild، يمكنك ببساطة إضافة علامة التصحيح إلى أهداف برنامجك، وسوف تحدد متى يتم إدراج علامة -g أم لا.

على سبيل المثال، إذا كنت تقوم بإنشاء ملف foo.ml مع الحزمة bar ثم الخاص بك _tags سيكون للملف سطر:

<foo.ml>: package(bar), debug

سيؤدي هذا إلى إدراج المناسب -g الأعلام أثناء إنشاء ملفات bytecode/الأصلية.ومع ذلك، لا تزال بحاجة إلى تعيين متغير البيئة باستخدام export OCAMLRUNPARAM=b كما هو مذكور في الإجابات الأخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top