开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (31)
标签 (24)
master
release-16.01
release-13.12
release-xx.yy
xml_compiler
release-12.11
codeblocks_console
sqrat
wxpropgrid_debugger
wxsmith_addons
backup_of_trunk_before_switch_to_codecompletion_refactrong
codecompletion_refactoring
scintilla
release-10.05
wxfnb_to_wxaui
sc
release-8.02
rick_s_playground
New_wxSmith
cf
wxpropgrid_debugger_merge_candidate
before_merge_codecompletion_refactoring
10.05
wiley1
8.02
head_merged_to_yt
VERSION_1_0_MERGE_TO_HEAD
SNAPSHOT_AUG_17_2005
SNAPSHOT_AUG_11_2005
SNAPSHOT_UNICODE
SNAPSHOT_AUG_04_2005
CODEBLOCKS_1_0_RC1_1
CODEBLOCKS_1_0_RC1
SNAPSHOT_24_6_05
SNAPSHOT_28052005
CODEBLOCKS_1_0_FINALBETA
SNAPSHOT_5_5_05
CODEBLOCKS_1_0_BETA7
CODEBLOCKS_1_0_BETA6
CODEBLOCKS_1_0_BETA5
master
分支 (31)
标签 (24)
master
release-16.01
release-13.12
release-xx.yy
xml_compiler
release-12.11
codeblocks_console
sqrat
wxpropgrid_debugger
wxsmith_addons
backup_of_trunk_before_switch_to_codecompletion_refactrong
codecompletion_refactoring
scintilla
release-10.05
wxfnb_to_wxaui
sc
release-8.02
rick_s_playground
New_wxSmith
cf
wxpropgrid_debugger_merge_candidate
before_merge_codecompletion_refactoring
10.05
wiley1
8.02
head_merged_to_yt
VERSION_1_0_MERGE_TO_HEAD
SNAPSHOT_AUG_17_2005
SNAPSHOT_AUG_11_2005
SNAPSHOT_UNICODE
SNAPSHOT_AUG_04_2005
CODEBLOCKS_1_0_RC1_1
CODEBLOCKS_1_0_RC1
SNAPSHOT_24_6_05
SNAPSHOT_28052005
CODEBLOCKS_1_0_FINALBETA
SNAPSHOT_5_5_05
CODEBLOCKS_1_0_BETA7
CODEBLOCKS_1_0_BETA6
CODEBLOCKS_1_0_BETA5
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (31)
标签 (24)
master
release-16.01
release-13.12
release-xx.yy
xml_compiler
release-12.11
codeblocks_console
sqrat
wxpropgrid_debugger
wxsmith_addons
backup_of_trunk_before_switch_to_codecompletion_refactrong
codecompletion_refactoring
scintilla
release-10.05
wxfnb_to_wxaui
sc
release-8.02
rick_s_playground
New_wxSmith
cf
wxpropgrid_debugger_merge_candidate
before_merge_codecompletion_refactoring
10.05
wiley1
8.02
head_merged_to_yt
VERSION_1_0_MERGE_TO_HEAD
SNAPSHOT_AUG_17_2005
SNAPSHOT_AUG_11_2005
SNAPSHOT_UNICODE
SNAPSHOT_AUG_04_2005
CODEBLOCKS_1_0_RC1_1
CODEBLOCKS_1_0_RC1
SNAPSHOT_24_6_05
SNAPSHOT_28052005
CODEBLOCKS_1_0_FINALBETA
SNAPSHOT_5_5_05
CODEBLOCKS_1_0_BETA7
CODEBLOCKS_1_0_BETA6
CODEBLOCKS_1_0_BETA5
codeblocks
/
src
/
plugins
/
debuggergdb
/
debuggerdriver.cpp
codeblocks
/
src
/
plugins
/
debuggergdb
/
debuggerdriver.cpp
debuggerdriver.cpp 4.37 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3
* http://www.gnu.org/licenses/gpl-3.0.html
*
* $Revision$
* $Id$
* $HeadURL$
*/
#include <sdk.h>
#include "debuggerdriver.h"
#include "debuggergdb.h"
#include <cbdebugger_interfaces.h>
DebuggerDriver::DebuggerDriver(DebuggerGDB* plugin)
: m_pDBG(plugin),
m_ProgramIsStopped(true),
m_ChildPID(0),
m_QueueBusy(false),
m_currentFrameNo(0),
m_userSelectedFrameNo(-1)
{
//ctor
}
DebuggerDriver::~DebuggerDriver()
{
//dtor
for (size_t ii = 0; ii < m_DCmds.GetCount(); ++ii)
delete m_DCmds[ii];
m_DCmds.Clear();
}
void DebuggerDriver::Log(const wxString& msg)
{
m_pDBG->Log(msg);
}
void DebuggerDriver::DebugLog(const wxString& msg)
{
m_pDBG->DebugLog(msg);
}
void DebuggerDriver::ClearDirectories()
{
m_Dirs.Clear();
}
void DebuggerDriver::AddDirectory(const wxString& dir)
{
if (m_Dirs.Index(dir) == wxNOT_FOUND)
m_Dirs.Add(dir);
}
void DebuggerDriver::SetWorkingDirectory(const wxString& dir)
{
m_WorkingDir = dir;
}
wxString DebuggerDriver::GetDebuggersWorkingDirectory() const
{
wxString oldDir = wxGetCwd();
wxSetWorkingDirectory(m_WorkingDir);
wxString newDir = wxGetCwd();
wxSetWorkingDirectory(oldDir);
return newDir;
}
void DebuggerDriver::SetArguments(const wxString& args)
{
m_Args = args;
}
void DebuggerDriver::ShowFile(const wxString& file, int line)
{
wxCommandEvent event(DEBUGGER_SHOW_FILE_LINE);
event.SetString(file);
event.SetInt(line);
m_pDBG->ProcessEvent(event);
}
void DebuggerDriver::NotifyCursorChanged()
{
if (!m_Cursor.changed || m_LastCursorAddress == m_Cursor.address)
return;
m_LastCursorAddress = m_Cursor.address;
wxCommandEvent event(DEBUGGER_CURSOR_CHANGED);
m_pDBG->ProcessEvent(event);
}
void DebuggerDriver::NotifyDebuggeeContinued()
{
m_pDBG->DebuggeeContinued();
ResetCursor();
}
void DebuggerDriver::ResetCursor()
{
m_LastCursorAddress.Clear();
m_Cursor.address.Clear();
m_Cursor.file.Clear();
m_Cursor.function.Clear();
m_Cursor.line = -1;
m_Cursor.changed = false;
}
void DebuggerDriver::QueueCommand(DebuggerCmd* dcmd, QueuePriority prio)
{
// DebugLog(_T("Queueing command: ") + dcmd->m_Cmd);
if (prio == Low)
m_DCmds.Add(dcmd);
else
m_DCmds.Insert(dcmd, 0);
RunQueue();
}
DebuggerCmd* DebuggerDriver::CurrentCommand()
{
return m_DCmds.GetCount() ? m_DCmds[0] : 0;
}
void DebuggerDriver::RunQueue()
{
if (m_QueueBusy || !m_DCmds.GetCount() || !IsProgramStopped())
return;
DebuggerCmd *command = CurrentCommand();
// Log(_T("Running command: ") + CurrentCommand()->m_Cmd);
// don't send a command if empty; most debuggers repeat the last command this way...
if (!command->m_Cmd.IsEmpty())
{
m_QueueBusy = true;
m_pDBG->DoSendCommand(command->m_Cmd);
if (command->IsContinueCommand())
m_ProgramIsStopped = false;
}
// Call Action()
command->Action();
// If the command was an action (i.e. no command specified,
// remove it from the queue and run the next command.
// For other commands, this happens in driver's ParseOutput().
if (command->m_Cmd.IsEmpty())
{
RemoveTopCommand(true);
RunQueue();
}
}
void DebuggerDriver::RemoveTopCommand(bool deleteIt)
{
if (m_QueueBusy || !m_DCmds.GetCount())
return;
// Log(_T("Removing command: ") + CurrentCommand()->m_Cmd);
if (deleteIt)
delete m_DCmds[0];
m_DCmds.RemoveAt(0);
}
DebuggerDriver::StackFrameContainer const & DebuggerDriver::GetStackFrames() const
{
return m_backtrace;
}
DebuggerDriver::StackFrameContainer& DebuggerDriver::GetStackFrames()
{
return m_backtrace;
}
const DebuggerDriver::ThreadsContainer & DebuggerDriver::GetThreads() const
{
return m_threads;
}
DebuggerDriver::ThreadsContainer & DebuggerDriver::GetThreads()
{
return m_threads;
}
void DebuggerDriver::SetCurrentFrame(int number, bool user_selected)
{
m_currentFrameNo = number;
if (user_selected)
m_userSelectedFrameNo = number;
}
void DebuggerDriver::ResetCurrentFrame()
{
m_currentFrameNo = 0;
m_userSelectedFrameNo = -1;
if (Manager::Get()->GetDebuggerManager()->UpdateBacktrace())
Manager::Get()->GetDebuggerManager()->GetBacktraceDialog()->Reload();
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

Git and svn mirror of the Code::Blocks svn-repo at http://svn.code.sf.net/p/codeblocks/code
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/yyxtyk/codeblocks.git
git@gitee.com:yyxtyk/codeblocks.git
yyxtyk
codeblocks
codeblocks
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /