как заставить gcc выложить отображение от потоковых графов до чисел строки исходного кода

Надстройка COM будет работать. Вы можете использовать событие Application.NewMail для перехвата входящих писем и их изменения. Вам нужно будет заменить дюжину или около того PR_SENDER_xyz и PR_SENT_RESPRESENTING_xyz свойств. Посмотрите на сообщение с MFCMAPI или OutlookSpy (нажмите кнопку IMessage).

Имейте в виду, что MailItem.PropertyAccessor.SetProperty не позволит вам установить эти свойства; для этого вам потребуется использовать Extended MAPI или Redemption .

10
задан Community 23 May 2017 в 12:16
поделиться

3 ответа

Попробуйте gcc опцию -fdump-tree-fixupcfg-lineno.

Это будет "структурная распечатка программы", анализирующая AST (с номерами строки) способом, который может легко быть проанализирован с помощью относительно простого лексического анализатора или любого regex механизма. Просто найдите все неключевые слова предшествовавшими '=' и сопровождаемый' (' - это будут вызовы функции.

Все сложные выражения будут разделены на несколько строк, таким образом, никакие два вызова функции не появятся на одной строке.

Возьмите простую программу:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define PI (3.1415926536)

int main(int argc, char *argv[]) {
    double  angle = PI / 2.0;
    printf("Sine = %lf, cosine = %lf\n", sin(angle), cos(angle));
    return EXIT_SUCCESS;
}

Скомпилируйте его с -fdump-tree-fixupcfg-lineno и Вы получаете что-то вроде этого:

main (argc, argv)
{
  double angle;
  int D.3381;
  double D.3380;
  double D.3379;

  # BLOCK 2, starting at line 8
  # PRED: ENTRY (fallthru)
  [test.c : 8] angle = 1.57079632680000003119857865385711193084716796875e+0;
  [test.c : 9] D.3379 = [test.c : 9] cos (angle);
  [test.c : 9] D.3380 = [test.c : 9] sin (angle);
  [test.c : 9] printf (&"Sine = %lf, cosine = %lf\n"[0], D.3380, D.3379);
  [test.c : 10] D.3381 = 0;
  return D.3381;
  # SUCC: EXIT

}

Вы не получите сложных выражений - просто присвоения и вызов функции и никакие макросы CPP, очень легкие проанализировать. Циклы и условные выражения не делают это намного более трудным.

10
ответ дан 3 December 2019 в 22:01
поделиться

Valgrind и KCacheGrind кажутся хорошим инструментом для этого использования:

valgrind --tool=callgrind --dump-instr=yes ./your_binary

Это даст Вам файл, названный callgrind.out.pid, который можно открыть с KCacheGrind. Это позволит Вам видеть большую информацию как граф вызовов, имя файла...

3
ответ дан 3 December 2019 в 22:01
поделиться

You might try Treehydra, a GCC plugin that gives you read-only access to GCC internal representations of code during compilation. (However, it's a bit of a chore to build, and I'm not sure it'll give better results than -fdump-* for this problem.)

3
ответ дан 3 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: