سؤال

هل هناك أداة بسيطة، والتي يمكن استخدامها لتحديد من حيث يتم استدعاء الوظيفة، والتي تدونها الأخرى تدعو الوظيفة ...؟

يحرر: أنا أستخدم Mac OS X (10.6) وتريد فقط إجراء التحليل الثابت.

شكرا!

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

المحلول

ماذا عن cscope.ب تحقق من العناصر الرصاصة الثالثة والسفانية على الصفحة:

  • وظائف تسمى وظيفة
  • وظائف الدعوة وظيفة

لقد مر بعض الوقت منذ أن استخدمت CSCOPE على C ++، ويبدو أن أتذكر أنه صخري على كود C، ولكن ليس قويا مع C ++.

نصائح أخرى

GTAGS هي أداة يمكنك استخدامها لوضع العلامات، ولكن لقبه الاستدعاء أيضا.

http://www.gnu.org/software/global/

هذا يدعم C و C ++ و YACC و JAVA و PHP4. ولكن لا يمكن التعامل مع قوالب C ++ أو غيرها من المواد المعقدة بشكل صحيح.

باستخدام لوحة العلامات هذه، قمت بإجراء برنامج نصي للحصول على شجرة مكالمة من
اختيار المستخدم من خلال إكمال bash مثل ما يلي،
الذي يعرض Calltree في Google Profiler Code:

% global-calltree -x prof_handler Add Evict ProfileData Stop DisableHandler RAW_CHECK WRITE_TO_STDERR
prof_handler:414 => Add:441               |profiler.cc                         |instance_.collector_.Add(depth, stack);
 Add:241 => Evict:290                      |profiledata.cc                      |Evict(*e);
  Evict:61 => ProfileData:75                |profiledata.cc                      |ProfileData::ProfileData()
   ProfileData:124 => Stop:125               |profiledata.cc                      |Stop();
    Stop:261 => DisableHandler:273            |profiler.cc                         |DisableHandler();
     DisableHandler:400 => RAW_CHECK:405       |profiler.cc                         |RAW_CHECK(sigaction(SIGPROF, &sa, NULL) == 0, "sigaction failed");
      RAW_CHECK:83 => WRITE_TO_STDERR:86        |base/logging.h                      |WRITE_TO_STDERR("Check failed: " #condition ": " message "\n",           \
       WRITE_TO_STDERR:59 => DECLARE_int32:65    |base/logging.h                      |DECLARE_int32(verbose);

لا أعرف عن أدوات بسيطة، ولكن مجانا، هناك codeviz. (يمكنك قراءة مقالب RAW بدلا من إنشاء الرسوم البيانية إذا كنت تفضل ذلك). التحذير: جميع أدوات التحليل الثابت لديها بعض المشاكل مع المكالمات الافتراضية، والأسوأ مع القوالب.

منذ استخدام نظام التشغيل Mac، كلا هو مترجم جديد مع ميزة التحليل الثابت.

مثال على YouTube:العثور على الأخطاء مع clang

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