调试MinGW编译的代码时,gdb因错误193而失败

时间:2010-02-09 13:15:26

标签: c eclipse gcc gdb debugging

当我尝试使用Eclipse调试代码时会显示:

alt text http://img63.imageshack.us/img63/1679/eclipseerr.jpg

然后我尝试使用Notepad ++和命令行gcc手动创建一个简单的Hello World程序。当我启动gdb调试器时,发生了这种情况:

  

(gdb)运行

     

启动程序:   C:\ Documents and   设置\彼得\ Bureaublad / TEST.EXE   创建进程C:\ Documents时出错   和   设置\彼得\ Bureaublad / TEST.EXE,   (错误193)。

二进制文件运行正常,但是一旦我尝试调试它就会返回错误193。我正在使用由MinGW GCC编译器处理的C代码。我尝试重新安装编译器和调试器(最新版本),但没有改变任何东西。它在过去一直有效,我不记得对与编译器相关的设置进行任何更改。

以下是Eclipse生成的错误日志示例。

  

!ENTRY org.eclipse.cdt.dsf.gdb 4 5012   2010-02-09 18:19:47.375!MESSAGE错误   在最终发射序列中!STACK 1   org.eclipse.core.runtime.CoreException:   无法执行MI命令:   -exec-run来自调试器后端的错误消息:创建进程时出错   C:/ Documents and Settings / Pieter / Mijn   documenten /我的   收存箱/ Unief / C / H12 / Opdr07 /调试/ CH12O07.exe,   (错误193)。在   org.eclipse.cdt.dsf.concurrent.Sequence.abortExecution(Sequence.java:560)     在   org.eclipse.cdt.dsf.concurrent.Sequence.access $ 4(Sequence.java:552)     在   org.eclipse.cdt.dsf.concurrent.Sequence $ 2.handleErrorOrWarning(Sequence.java:424)     在   org.eclipse.cdt.dsf.concurrent.RequestMonitor.handleFailure(RequestMonitor.java:314)     在   org.eclipse.cdt.dsf.concurrent.RequestMonitor.handleCompleted(RequestMonitor.java:277)     在   org.eclipse.cdt.dsf.concurrent.RequestMonitor $ 2.run(RequestMonitor.java:239)     在   java.util.concurrent.Executors $ RunnableAdapter.call(未知   来源)at   java.util.concurrent.FutureTask中$ Sync.innerRun(未知   来源)at   java.util.concurrent.FutureTask.run(未知   来源)at   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.access $ 301(未知   来源)at   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(未知   来源)at   java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(未知   来源)at   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(未知   来源)at   java.lang.Thread.run(未知来源)   !SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4   10004 2010-02-09 18:19:47.546!MESSAGE   无法执行MI命令:   -exec-run来自调试器后端的错误消息:创建进程时出错   C:/ Documents and Settings / Pieter / Mijn   documenten /我的   收存箱/ Unief / C / H12 / Opdr07 /调试/ CH12O07.exe,   (错误193)。

5 个答案:

答案 0 :(得分:6)

可能是你使用的是旧版本的gdb,doesn't support native MinGW debugging(因为你说你更新到最新版本),或者你是invoking the debugger incorrectly?换句话说,如果您的可执行文件名为helloworld.exegdb helloworld可能会给您错误,而gdb helloworld.exe可能会有效。

编辑:进一步的谷歌搜索说尝试directory name without spaces可能有效(解决方案是针对Code :: Blocks,但尝试不会有害)。

答案 1 :(得分:3)

谷歌告诉我“错误193”是一个Windows错误代码,这意味着可执行文件实际上不是可执行文件。看起来你的EXE有问题 - 你可以直接启动它吗?

答案 2 :(得分:3)

您的共享库设置已打开(可能是因为您将项目从可执行文件切换到共享库,然后返回)并且仍然使用'-shared'选项调用gcc,但输出文件具有.exe延期。

中有一个名为“shared”的复选框
Properties => C/C++ Build => Settings => Tool Settings => MinGW C Linker => Shared Library Settings.   

确保未选中。我也有错误193,直到我把它关掉。

答案 3 :(得分:0)

This thread确实提到了:

  • 错误193是ERROR_BAD_EXE_FORMAT
  • 这可能是您的cygwin安装的问题。

注意(作为“cygwin安装问题”的一个例子)如果安装在一个带有包含空格的路径的cygwin中,则存在gdb错误(请参阅this thread

在Eclipse CDT之外重现问题时,您使用的是什么版本的gdb?

答案 4 :(得分:0)

你说:

  

(gdb)运行

     

启动程序:C:\ Documents and   设置\彼得\ Bureaublad / TEST.EXE   创建进程C:\ Documents时出错   和   设置\彼得\ Bureaublad / TEST.EXE,   (错误193)。

它可能与可执行路径末尾的正斜率/反斜杠有关吗?也许部分Bureaublad/test.exe在这里打算作为单个可执行文件,并且无法找到它?