式の使用

一部のコマンドでは、式を指定することができます。デバッガでは様々な種類の式を指定して、コマンドの操作を拡張できます。例えば、バイナリ数式、モジュール名への参照、関数呼び出しなどの使用が可能です。

Show/hide$ 文字を使用したレジスタおよびデバッガ変数の内容へのアクセス

式の中で $ 文字とレジスタ名を使用して、レジスタの内容にアクセスすることができます。以下に例を示します。

print 4+$R0      # R0 レジスタの内容に 4 を加算し、結果を出力

print コマンドの結果は、デバッガ変数に記録されます。ブレークポイントまたはウォッチポイントを作成するコマンド、start コマンドや memory コマンドなども、デバッガ変数を使用して新しいリソースの ID を記録します。これらの各デバッガ変数には番号が割り当てられ、その後 $ 文字を使用して式の中で使用できます。

print の結果またはリソース ID にアクセスするには、以下のデバッガ変数を使用します。

$

最後に割り当てられたデバッガ変数内の print の結果または ID

$$

最後から 2 番目のデバッガ変数内の print の結果または ID

$n

番号 n のデバッガ変数内の print の結果または ID

また以下のデバッガ変数を使用することもできます。

$cwd

現在の作業ディレクトリ

$cdir

現在のコンパイルディレクトリ

$entrypoint

現在のイメージのエントリポイント

$idir

現在のイメージディレクトリ

$sdir

現在のスクリプトディレクトリ

$datetime

文字列形式での現在の日付と時刻

$timems

1970 年 1 月 1 日から経過した時間(単位:1/1000 秒)

$pid

現在のオペレーティングシステムのプロセス ID

$thread

マルチスレッドアプリケーションの現在のスレッド ID

$core

対称型マルチプロセシング(SMP)システムの現在のプロセッサ ID

$vmid

ハイパーバイザ/仮想マシンのデバッグをサポートするシステムの現在の仮想マシン ID(VMID)

Note

  • $thread は、OS 認識プラグインによって報告された現在のコンテキストについて、デバッガによって一意に割り当てられます。OS 認識プラグインがロードされていない場合は、$thread は現在のコアである $core を追跡します。

  • $pid は、現在のコンテキストについて、OS 認識プラグインによってデバッガに割り当てられます。OS 認識プラグインがロードされていない場合は、$pid は現在のコアである $core を追跡します。

Show/hide式の中での組み込み関数の使用

式の中で組み込み関数を使用して、より多くの機能を提供することができます。デバッガでは、以下の関数がサポートされています。

int strcmp(const char *str1, const char *str2);

2 つの文字列を比較して 1 つの戻り値に整数を返します。

戻り値は以下のとおりです。

<0

文字の照合順序で、2 番目の引数文字列の値が最初の引数文字列の値より後であること(str1 < str2)を示します。

0

2 つの文字列の内容が同じであることを示します。

>0

文字の照合順序で、最初の引数文字列の値が 2 番目の引数文字列の値より後であること(str2 < str1)を示します。

int strncmp(const char *str1, const char *str2, size_t n);

2 つの文字列で最大 n 文字を比較して、整数を返します。

戻り値は以下のとおりです。

<0

文字の照合順序で、2 番目の引数文字列の値が最初の引数文字列の値より後であること(str1 < str2)を示します。

0

2 つの文字列の内容が同じであることを示します。

>0

文字の照合順序で、最初の引数文字列の値が 2 番目の引数文字列の値より後であること(str2 < str1)を示します。

char *strcpy(char *str1, const char *str2);

"\0" を含め、str2str1 にコピーし、str1 を返します。

char *strncpy(char *str1, const char *str2, size_t n);

"\0" を含め、str2 で最大 n 文字を str1 にコピーし、str1 を返します。str2 の文字数が n より少ない場合、"\0" を埋め込みます。

void *memcpy(void *s, const void *cs, size_t n);

cs から s に最大 n 文字をコピーし、s を返します。

Example 1. break コマンドによる組み込み関数 strcmp() の使用

break main.c:45 if strcmp(myVar, "10") == 0     # 文字列が同じ場合に停止する
                                                # 条件ブレークポイントを設定

Show/hide関連項目

Copyright © 2010-2014 ARM. All rights reserved.ARM DUI 0452TJ
Non-ConfidentialID102114