2017-11-20 5 views
0

にブレークポイントを設定すると問題:GDBを実行すると私は5つのブレークポイントで、このgdbのスクリプトを使用していますGDBのsciprt

set pagination off 
break rewriter_def.h:679 
break asserted_formulas.cpp:149 
break Z3Solver.cpp:221 
break api_solver.cpp:247 
break smt_context.cpp:2950 
run 

それは第三ブレークポイント、 に停止しますが、ていない他のブレークポイントで

Breakpoint 1, klee::Z3SolverImpl::internalRunSolver (...) at 
Z3Solver.cpp:221 
221 int dave=0; 

私は他のブレークポイントは本当にに設定されていないことを確認し、 手動GDBコンソールからそれらをクリアしようとすることで:私は手動でコピーして、他のブレークは、GDBコンソールへのスクリプトファイルから コマンド貼り付ける場合

(gdb) clear api_solver.cpp:247 
No breakpoint at api_solver.cpp:247. 

すべてが正常に作品:

(gdb) break api_solver.cpp:247 
Breakpoint 2 at 0x7ffff5afbb31: file ../src/api/api_solver.cpp, line 
247. 
(gdb) cont 
Continuing. 

Breakpoint 2, Z3_solver_assert (...) at ../src/api/api_solver.cpp:247 
247 to_solver_ref(s)->assert_expr(to_expr(a)); 

スクリプトによって設定されているブレークポイントは、1つのソースツリー(KLEE)から 、 、その他の4つのブレークポイントは設定されていません。別のソースツリー(Z3)から を開始しました。 これはPATHの問題のようなものでしょうか? ご協力いただきありがとうございます!

答えて

1

私は手動でGDBコンソールにスクリプトファイルから他のブレークコマンドをコピーして貼り付ける場合は、すべてが正常に動作します:

最も考えられる原因:他のブレークポイントは、共有ライブラリに「属しています」まだロードされていない。

バイナリをGDBにロードした後で、同じコマンドをカット/ペーストしてみてください。を実行してください。を実行してください。問題の共有ライブラリが直接リンクされている場合、それはあなたのプログラムが到達するまでにロードされます:チャンスは、GDBは、あなたがブレークポイントを設定する前に、スクリプトにstartを追加することによってこの問題を回避することができます

No source file named rewriter_def.h. 

のようなものを言うだろう、ですmain(これはstartコマンドの機能です)。

+0

ありがとう!出来た! – OrenIshShalom

関連する問題