web-dev-qa-db-ja.com

CLionは別のシステム端末でプログラムを実行します

CLionを使用してインタラクティブにデバッグしたいncursesプログラムがあります。問題は、CLionでプログラムを実行してデバッグすると、プログラムが実行されている組み込みコンソールにncursesプログラムの出力が正しく表示されないことです。

CLionsデバッガーでプログラムをデバッグしているときに出力を正しく表示できるように、システムターミナルでプログラムを実行したいと思います。

これを行う方法はありますか?

12
CS Student

これを達成するための最良の方法は、GDBを使用することです。開始するのは本当にイライラする可能性があるので、Linuxでどのように達成したかを説明します。

  1. ターミナルを開き、プロジェクトのデバッグファイルに移動して、gdbserver localhost:1234 ./myFileと入力します。
  2. myFileプロジェクトへのクリオンを開くと、右上隅にすべてのビルド(またはプロジェクト名)が表示されます。それをクリックして、[構成の編集]に移動します。
  3. 左上隅にプラス記号が表示されているはずです。それをクリックして、[GDBリモートデバッグ]を押します。
  4. 次に、「ターゲットリモート」にtcp:127.0.0.1:1234と入力します
  5. 次に「パスマッピング」でプラス記号を押し、リモートと場所の両方に/location/to/file/myFile(1と同じファイル)と入力します
  6. [OK]を押し、右上隅で作成した構成の名前を選択して、[デバッグ]を押します。

これを機能させるには、もう一度gdbserverを再起動する必要があるかもしれませんが、上記のすべての手順を実行すると、デバッグプロンプトが表示され、ターミナルでプロジェクトが実行されていることがわかります。

これにはいくつかの制限があります。たとえば、端末でgdbserver localhost:1234 ./myFileコマンドを実行して機能させる必要があります。

私を助けたいくつかのビデオ/ドキュメント:

これがお役に立てば幸いです:)

4
Glacier11

他のデバッガーでは、ターミナルでncursesアプリケーションを実行し、ncursesを使用してデバッガーをプロセスにアタッチすることでこれを行います。

これにより、ncurses(端末のI/Oモードを変更する)とデバッガーのコマンドラインとの間の干渉を回避できます。

attach機能は、CLionsデバッガーの最近リリースされた機能です。

参考文献:

3
Thomas Dickey