解决gdb调试时tui源码窗口由于显示dos格式文件导致的行号混乱问题
由于调试环境原因无法使用高版本GDB,而低版本GDB在代码为dos格式时,在tui源码窗口内每行代码都会多出一行空行导致行号混乱,例如
[code]#include "defs.h" #include "main.h" #include "gdb_string.h" #include "interps.h" int main (int argc, char **argv) { struct captured_main_args args; memset (&args, 0, sizeof args); args.argc = argc; args.argv = argv; args.use_windows = 0; args.interpreter_p = INTERP_CONSOLE; return gdb_main (&args); }
显示为:
解决方法如下:
一、利用dos2unix命令修改源文件格式
[code]dos2unix -k 文件名 // -k参数保持源文件日期不变
二、
修改gdb源码目录/gdb/tui/tui-source.c文件中tui_set_source_content()函数中的换行符处理部分,然后重新编译
gdb-6.3对应代码为:
if (c != EOF)
{
i = strlen (src_line) - 1;
do
{
if ((c != '\n') &&
/*屏蔽 (c != '\r') &&*/ (++i < threshold))
{
// 新增修改,将回车符0x0d改为空格,防止显示为空行
if ( c=='\r' )
c = ' ';if (c < 040 && c != '\t')
{
src_line[i++] = '^';
src_line[i] = c + 0100;
}
else if (c == 0177)
{
src_line[i++] = '^';
src_line[i] = '?';
}
else
{ /* Store the charcter in the line
buffer. If it is a tab, then
translate to the correct number of
chars so we don't overwrite our
buffer. */
if (c == '\t')
{
int j, max_tab_len = tui_default_tab_len ();for (j = i - (
(i / max_tab_len) * max_tab_len);
((j < max_tab_len) &&
i < threshold);
i++, j++)
src_line[i] = ' ';
i--;
}
else
src_line[i] = c;
}
src_line[i + 1] = 0;
}
else
{ /* If we have not reached EOL, then eat
chars until we do */
while (c != EOF && c != '\n' /*屏蔽&& c != '\r'*/)
c = fgetc (stream);
}
}
while (c != EOF && c != '\n' && /*屏蔽c != '\r' &&*/
i < threshold && (c = fgetc (stream)));
}
三、编译优化导致的混乱可用-O0选项重新编译
[code]gcc -g -O0 -o XXX XXX.c
貌似-O2就没问题了
- 解决gdb 调试 core 文件函数名显示为问号的问题
- 解决gdb 调试 core 文件函数名显示为问号的问题
- FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- DOS命令行窗口mysql中文显示乱码问题解决方法
- Ubuntu由于修改etc/profile文件导致开机无法登陆问题解决办法(仅供参考)
- WebApp由于需要从Spring官网下载schema文件导致启动时长时间卡住问题的分析和解决
- <util:properties/>加载的配置文件中有中文导致乱码,如何通过分析源码解决问题?
- 【问题解决】由于未在web.config文件中启用调试,因此无法在调试模式下运行该页
- css文件引用后变成了乱码导致样式不能显示的问题的解决
- FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
- django 解决css,js文件304导致无法加载显示问题
- (PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常的问题解决
- dos文件放到linux上面显示^M问题的解决
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- 由于IE版本问题导致SAP的F1帮助文档显示不出来的解决办法
- html文件修改后缀为aspx之后在ie6中格式显示不正确问题的解决办法
- DB2问题诊断与解决: 一个由于历史文件过大,导致LOAD慢的问题