2
私は最近、dotを使って、かなり複雑なアセンブリプログラムのフローグラフとコールグラフを作成しています。すべてのことが、ちょっとしたヒックアップで完璧にうまくいきます。時には、あるクラスター内のあるノードから別のクラスター内の別のノードに線を引くと、線は何とか倍増します。ドットツールの二重矢印
コードとドット出力イメージとして私の問題を削除しました。
おかげ
digraph G {
ratio=auto; node[fontsize=12]; label="boot"; newrank=true;
{
node[shape=plaintext];
1->2[arrowsize=0.7,penwidth=0.1];
}
Reset->uart_init[arrowsize=0.7, penwidth=0.1];
{ rank=same; "Reset"; "1"; }
{ rank=same; "uart_init"; "2"; }
/* terminalhooks cluster */
subgraph cluster42 {
fontsize=12;
label="terminalhooks.asm";
labelloc=b;
type->emit[arrowsize=0.7,penwidth=0.1];
emit[label=<emit<BR/><FONT POINT-SIZE="8">Terminal redirection hooks<BR/>für eventuelle Umleitungen</FONT>>];
}
/* stm-terminal cluster */
subgraph cluster43 {
fontsize=12;
label="stm-terminal.asm";
labelloc=b;
emit->serial_emit->serial_qemit[arrowsize=0.7,penwidth=0.1];
serial_emit[label=<serial_emit<BR/><FONT POINT-SIZE="8">Ausgabe Char via UART</FONT>>];
serial_qemit[label=<serial_qemit<BR/><FONT POINT-SIZE="8">Prüft TXE (Transmit Buffer Empty)</FONT>>];
}
{ rank=same; "type"; "emit"; "serial_emit"; "serial_qemit"; }
}
何らかの理由で、それは私の例で動作しますが、矢印をかなりねじ込みます。しかし、tailport = eを追加した他のグラフでは、さらに別の行が追加されます。 – Vinci
@Vinciは私の編集を見ます。 'newrank'は必要ですか? –
あなたはそうです、newrankがそれを引き起こしています。私はランクとクラスターを使用してアセンブラファイルのカプセル化を表示しています... newrankがなければ、関数の周りのボックスはグラフの解釈を困難にします。 @Vinci最終編集。 – Vinci