调试器在我的断点处正常停止,但是当我按下工具栏上的“下一步”按钮时,调试光标显示,而Code :: Blocks似乎失去了与gdb的连接(例如,无法停止调试) 。当我手动终止gdb进程时,IDE的Watches窗口会显示每个变量的消息:
<error reading variable ... (Cannot access memory at address ...)>
我在Ubuntu 16.04上使用GCC 5.3.1获得了Code :: Blocks 16.01。
我的第一个想法是gdb缺少调试数据/优化,但是我有-g3 -ggdb
个标志并且没有启用优化。
我很久以前就使用过C :: B,问题可能很少或很新(由于其中一个更新)。此外,还可以正确调试其他一些功能。
UPD。令人惊讶的是,我发现在函数开头只能调试一些行是不可能的:
bool Entangle::ProcessFile(size_t task_index)
{
//Preparing name for temp file
wxString name = u.tasks[task_index], error_text;
wxFileName fname(name);
wxString temp_path = RNG::TempName(fname.GetPathWithSep());
ErrorTracker::SetFile(name);
ullong fsize=0;
//Creating the Entangle header
Header head(fsize);
/** Opening files **/
//Opening original file
BinFile In(name, ios_base::in);
以下代码可以正常调试。