8

Perl で SWIG を使用して C/C++ コードをラップしました。コードがラップされているため、セグメンテーション違反はほとんどありません。Perl スクリプトを使用しようとしてdddいますが、残念ながら、スクリプトの行 (C/C++ コードを呼び出している行) にブレークポイントを設定しても、C/C++ コードdddにステップ インできません。

Perl コードをデバッグしているときに C ライブラリにブレークポイントを設定する方法はありますか、またはこの Perl スクリプトを実行しているときに C ライブラリをデバッグするための良い方法/ツールを知っていますか?

Linux/gcc を使用しています。

4

2 に答える 2

7

I did a simple thing. I called the gdb directly on perl interpreter.

    gdb /usr/bin/perl
    (gdb) r myscript
    #block the script someway or rerun it
    (gdb) b whatever_my_function

It seems that once the scipt is running shared memory is also loaded in memory. Once this happened I have available all information, functions and breakpoint for debugging.

于 2011-07-13T15:52:49.670 に答える
0

私は TCL から C++ を呼び出すために SWIG のみを使用し、Visual Studio を使用してデバッグしましたが、同じ考えがあなたのケースにも当てはまるはずです。デバッグのために行ったことを説明します。状況に適用する方法を理解していただければ幸いです。

  • C++ モジュールのデバッグ バージョンをビルドする
  • TCL スクリプトにデバッグ バージョンが含まれていることを確認します (TCLloadコマンドのパスは、モジュールのデバッグ バージョンを指しています)。
  • C++ コードにブレークポイントを配置する
  • Visual Studio デバッガーを使用して TCL スクリプトを呼び出します。たとえば、使用されるコマンドはtclsh85.exe MyScript.tcl

HTH

于 2011-07-13T15:38:05.887 に答える