2

通常、このようにシェルの下で Tcl スクリプトを呼び出します。

> tclsh8.5 mytest.tcl -opt1 foo -opt2 bar

一部のモジュールが C++ で実装されているため、gdb を起動してデバッグする必要がある場合。gdb 経由で tclsh を起動する必要があります。問題は、引数を指定して tcl sh でスクリプトを実行する方法です。

次のようなものが必要です:

tclsh> run mytest.tcl -opt1 foo -opt2 bar

exec を使用すると、別のプロセスが実行され、ブレークポイントの設定が失われるため、理想的ではありません。

tclsh> exec mytest.tcl -opt1 foo -opt2 bar
4

3 に答える 3

3

私は次のようなものがあなたのために働くはずだと思います:

set argv [list -opt1 foo -opt2 bar]
set argc 4
source mytest.tcl

したがって、引数が正しくなるようにargvとargcを設定してから、Tclコードをソースして実行します。

または、gdb runコマンドを使用すると、デバッグ対象の実行可能ファイルにコマンドライン引数を渡すことができます。それで、デバッグtclshの場合、次のようにrunコマンドの問題は何ですか?

run mytest.tcl -opt1 foo -opt2 bar

たとえば、cygwinの下では、次のことができます。

$ tclsh test.tcl
This is a test
$ gdb -q tclsh.exe
(no debugging symbols found)
(gdb) run test.tcl
Starting program: /usr/bin/tclsh.exe test.tcl
于 2012-08-15T09:30:07.900 に答える
1

gdb セッション内で tclsh を実行して引数を設定する場合は、次のようにします ($はシェル プロンプト、(gdb)は gdb プロンプトであり、gdb によって出力されるメッセージはすべて省略しています)。

$ gdb tclsh
(gdb) set args mytest.tcl -opt1 foo -opt2 bar
(gdb) ... set some breakpoints ...
(gdb) run

set env FOO=barスクリプトで何が起こっているかによっては、環境をセットアップする必要がある場合もあります。Tcl 独自のビルド ファイルは、このような手法を使用して、テスト スイートの実行をデバッグするときに引数を渡します。

于 2012-08-15T14:33:37.147 に答える
0

なぜただ走らないのか

gdb --args tclsh8.5 mytest.tcl -opt1 foo -opt2 bar

アプリケーションをデバッグする必要があるとき

于 2012-08-15T12:32:35.897 に答える