- enhancement: Remove all breakpoints for a closed non-project file.
- enhancement: Check and remove all non-exist breakpoints before debug a project
This commit is contained in:
parent
4c3ca8e7c4
commit
c204b39e00
2
NEWS.md
2
NEWS.md
|
@ -4,6 +4,8 @@ Red Panda C++ Version 2.14
|
||||||
- fix: Enum value defines is not correctly parsed.
|
- fix: Enum value defines is not correctly parsed.
|
||||||
- enhancement: Use differenct source file for each language in project templates
|
- enhancement: Use differenct source file for each language in project templates
|
||||||
- fix: Ctrl+click is too sensitive.
|
- fix: Ctrl+click is too sensitive.
|
||||||
|
- enhancement: Remove all breakpoints for a closed non-project file.
|
||||||
|
- enhancement: Check and remove all non-exist breakpoints before debug a project
|
||||||
|
|
||||||
Red Panda C++ Version 2.13
|
Red Panda C++ Version 2.13
|
||||||
|
|
||||||
|
|
|
@ -377,7 +377,16 @@ void Debugger::deleteBreakpoints(bool forProject)
|
||||||
mBreakpointModel->clear(forProject);
|
mBreakpointModel->clear(forProject);
|
||||||
// for (int i=mBreakpointModel->breakpoints().size()-1;i>=0;i--) {
|
// for (int i=mBreakpointModel->breakpoints().size()-1;i>=0;i--) {
|
||||||
// removeBreakpoint(i);
|
// removeBreakpoint(i);
|
||||||
// }
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void Debugger::deleteInvalidProjectBreakpoints(const QSet<QString> unitFiles)
|
||||||
|
{
|
||||||
|
for(int i=mBreakpointModel->breakpoints(true).count()-1;i>=0;i--) {
|
||||||
|
const PBreakpoint& bp=mBreakpointModel->breakpoint(i,true);
|
||||||
|
if (!unitFiles.contains(bp->filename))
|
||||||
|
mBreakpointModel->removeBreakpoint(i, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Debugger::removeBreakpoint(int line, const Editor *editor)
|
void Debugger::removeBreakpoint(int line, const Editor *editor)
|
||||||
|
|
|
@ -324,6 +324,7 @@ public:
|
||||||
void deleteBreakpoints(const QString& filename, bool forProject);
|
void deleteBreakpoints(const QString& filename, bool forProject);
|
||||||
void deleteBreakpoints(const Editor* editor);
|
void deleteBreakpoints(const Editor* editor);
|
||||||
void deleteBreakpoints(bool forProject);
|
void deleteBreakpoints(bool forProject);
|
||||||
|
void deleteInvalidProjectBreakpoints(const QSet<QString> unitFiles);
|
||||||
void removeBreakpoint(int line, const Editor* editor);
|
void removeBreakpoint(int line, const Editor* editor);
|
||||||
void removeBreakpoint(int line, const QString& filename, bool forProject);
|
void removeBreakpoint(int line, const QString& filename, bool forProject);
|
||||||
void removeBreakpoint(int index, bool forProject);
|
void removeBreakpoint(int index, bool forProject);
|
||||||
|
|
|
@ -2088,6 +2088,7 @@ void MainWindow::debug()
|
||||||
QString filePath;
|
QString filePath;
|
||||||
QFileInfo debugFile;
|
QFileInfo debugFile;
|
||||||
QStringList binDirs;
|
QStringList binDirs;
|
||||||
|
QSet<QString> unitFiles;
|
||||||
switch(getCompileTarget()) {
|
switch(getCompileTarget()) {
|
||||||
case CompileTarget::Project:
|
case CompileTarget::Project:
|
||||||
compilerSet=pSettings->compilerSets().getSet(mProject->options().compilerSet);
|
compilerSet=pSettings->compilerSets().getSet(mProject->options().compilerSet);
|
||||||
|
@ -2175,6 +2176,10 @@ void MainWindow::debug()
|
||||||
|
|
||||||
// mDebugger->setUseUTF8(e->fileEncoding() == ENCODING_UTF8 || e->fileEncoding() == ENCODING_UTF8_BOM);
|
// mDebugger->setUseUTF8(e->fileEncoding() == ENCODING_UTF8 || e->fileEncoding() == ENCODING_UTF8_BOM);
|
||||||
|
|
||||||
|
foreach(const PProjectUnit& unit, mProject->unitList()) {
|
||||||
|
unitFiles.insert(unit->fileName());
|
||||||
|
}
|
||||||
|
mDebugger->deleteInvalidProjectBreakpoints(unitFiles);
|
||||||
if (!mDebugger->start(mProject->options().compilerSet, filePath, binDirs))
|
if (!mDebugger->start(mProject->options().compilerSet, filePath, binDirs))
|
||||||
return;
|
return;
|
||||||
filePath.replace('\\','/');
|
filePath.replace('\\','/');
|
||||||
|
|
Loading…
Reference in New Issue