ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

TotalView 2017.2ベータ版 - Python混合デバッグのサポート強化、バッチデバッグとリバースデバッグ

ローグウェーブ セールスエンジニアの柄澤(からさわ)です。

ローグウェーブの並列デバッガTotalViewは、年に数回のリリースを行っていますが、リリースに先立ってベータ版をお客様向けに提供しています。先進的な機能をいち早く試したい方や新バージョンの動作検証にご協力いただける方に個別に配布しています。ご興味がある方はぜひ日本法人のサポートサービスまでご連絡ください。

ベータ版の情報については、なるべくこのブログでもご紹介していく予定ですが、最新情報はローグウェーブ米国本社のフォーラムページでアナウンスされています。

forums.roguewave.com

2017T.2.4のアナウンスでは、以下のPythonC/C++ 混合デバッグ機能がサポート強化されたことが述べられています。

  • 関数のコールスタック(呼び出し履歴)をフィルタリングするためのトグルボタンを追加

blog.roguewave.jp

  • NumPyのndarrayをサポート
  • ListとTupleをサポート

blog.roguewave.jp

また、dwz圧縮(compression)をサポートしました。Linuxでは実行用のバイナリや共有ライブラリにELF形式のファイルフォーマットが使われています。CentOSなど一部の環境ではELFにコンパイルするときにこの圧縮がかかり、デバッグシンボルを最適化したり重複の削除を行います。今回からTotalViewはこのdwz圧縮されたファイルもデバッグできるようになりました。2017.1のリリース時にコメントしたCentOSPython混合デバッグができない問題もこれで解消されました。

また、大規模なCUDAプログラムのデバッグが高速化されました。

2017T.2.7のアナウンスでは、下記の機能追加が発表されました。

  • 2017.1でLinuxに導入されたSplit DWARFがSolaris SPARCでもサポート対象となりました。

blog.roguewave.jp

  • 上記のdwz圧縮が施されたライブラリに対してもデバッグが可能になりました。dwz圧縮はRed Hat/CentOS系のシステムで広く使われているためこのサポートは特に有用です。
  • Xeon Phiでのデバッグに対し独立のライセンスが不要になりました。通常のLinux x86-64ライセンスだけで十分です。

また、以下のバグが修正されました。

blog.roguewave.jp

  • 入れ子になったループ内のブレークポイントに到達する際のパフォーマンスが向上しました。Macでは特に顕著なメリットが得られます。
  • 複雑なソースコードデバッグする際にReplayEngineがクラッシュするバグが修正されました。

改めて、ご興味がある方はぜひ日本法人のカスタマーサポートセンターまでご連絡ください。

ローグウェーブ セールスエンジニアの柄澤(からさわ)

TotalViewデバッガのptrace設定

こんにちは、ローグウェーブのセールスエンジニア 柄澤(からさわ)です。

TotalViewやそのバッチ実行形態であるtvscriptを起動する際に以下のメッセージが出ることがあります。

WARNING: Nonzero kernel.yama.ptrace_scope sysctl setting detected.

A security restriction may be in place that prevents attaching to a process that was not directly started by the current process. This security restriction may prevent debugging applications that are not directly started by the debugger, including most MPI jobs, attaching to running processes or enabling the Replay feature. You may be able to turn off this feature by entering:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

This will enable debugging and attaching to processes. This setting will last until the system is rebooted. For a permanent change, change the kernel.yama.ptrace_scope setting on the last line in /etc/sysctl.d/10-ptrace.conf.

ptraceとはUnixLinuxで他のプロセスを制御するためのシステムコールであり、TotalViewもデバッグ機能を実現するためにこの機能を利用しています。

ptrace_scopeの値が1など非ゼロの場合はデバッグがうまく実行できませんので必ず上記のコマンドを実行してptrace_scopeの値を0に変更してください。メッセージに記載されているように、このコマンドによる設定は一時的なもので、システムを再起動すると元に戻ってしまうため、永続的な設定とするためには /etc/sysctl.d/10-ptrace.conf の末尾にある数字を0に変えてください。このファイルには、ptraceがデバッグのためのシステムで、セキュリティ上の理由でデフォルトが1になっている旨が記載されています。

The PTRACE system is used for debugging. With it, a single user process
can attach to any other dumpable process owned by the same user. In the
case of malicious software, it is possible to use PTRACE to access
credentials that exist in memory (re-using existing SSH connections,
extracting GPG agent information, etc).

A PTRACE scope of “0” is the more permissive mode. A scope of “1” limits
PTRACE only to direct child processes (e.g. “gdb name-of-program” and
“strace -f name-of-program” work, but gdb’s “attach” and “strace -fp $PID”
do not). The PTRACE scope is ignored when a user has CAP_SYS_PTRACE, so
“sudo strace -fp $PID” will work as before. For more details see:
https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace

For applications launching crash handlers that need PTRACE, exceptions can
be registered by the debugee by declaring in the segfault handler
specifically which process will be using PTRACE on the debugee:
prctl(PR_SET_PTRACER, debugger_pid, 0, 0, 0);

In general, PTRACE is not needed for the average running Ubuntu system.
To that end, the default is to set the PTRACE scope to “1”. This value
may not be appropriate for developers or servers with only admin accounts.

TotalViewの動作がおかしいと思ったらご確認ください。

ローグウェーブのセールスエンジニア 柄澤(からさわ)

Windows GUI構築ライブラリ Stingray 12.2 リリース

ローグウェーブソフトウェアのStingrayが最新版12.2に更新されました。Stingrayを使用することで、Microsoft 製品のルックアンドフィールと操作感に合致した高度なアプリケーションをエンドユーザーに提供できるようになります。

今回の更新内容は最新の開発環境への対応です。

詳細は 英語ドキュメントページにあるリリースノートをご覧ください。

Stingrayのトライアルお申し込みバージョンアップリクエストもお待ちしております。

ローグウェーブソフトウェア セールスエンジニア 柄澤(からさわ)