小编Cha*_*had的帖子

有没有一种快速的方法可以在 gdb 的断点处显示源代码?

我在 gdb 中设置了一个断点,我想查看断点所在的源代码的确切行,只是为了确认它是正确的——有没有一种快速的方法来做到这一点?

“info b”命令为我提供了有关断点的信息,但它不显示源:

(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x00000000006c3ba4 in MyClass::foo(bar*)
                                                   at /home/user1/src/MyClass.cpp:1021
Run Code Online (Sandbox Code Playgroud)

我可以输入“list MyClass.cpp:1021”来查看这个断点周围的行,但我想知道是否有更短的方法。谷歌搜索和阅读 gdb 手册没有发现任何问题。

我知道,如果我正在执行程序并遇到断点,我可以只输入“list”,但我要特别询问我不在断点处的情况(程序甚至可能没有运行)。

gdb

7
推荐指数
1
解决办法
7698
查看次数

如何"强制"文件的ISO-8859-1ness?

我记得当我以前在日本开发网站时 - 有三种不同的字符编码货币 - 开发人员有一个技巧来"强制"编码源文件,所以它总是在他们的IDE中以正确的编码打开.

他们所做的是在包含日语字符的文件顶部放置注释,该日语字符仅存在于该特定字符编码中 - 它不在任何其他字符编码中!这非常有效.

我记得这一点,因为现在我有一个类似的,虽然是英语国家的问题.

我有一些文件必须是ISO-8859-1,但在我的编辑器(Linux上的Bluefish 1.0.7)中保持打开为UTF-8.除了磅(£)符号和诸如此类的东西之外,这通常不是问题.不要误会我的意思,我可以修复文件并将其另外保存为ISO-8859-1,但我希望它始终在我的编辑器中以ISO-8859-1打开.

那么,有没有任何类型的角色黑客 - 就像我上面提到的 - 这样做?还是其他任何方法?

PS.Unicode倡导者/福音传道者不必浪费时间试图转换我,因为我已经是其中之一!这是我继承的摇摇欲坠的旧系统:-(

PPS.请不要说"使用不同的编辑器"因为我是一个老屁并按我的方式设置:-)

ide unicode iso-8859-1 character-encoding

6
推荐指数
1
解决办法
1万
查看次数

p4v 无法启动:无法以用户身份登录”

我在 Ubuntu 上运行 p4v。通常我在终端窗口登录 p4,然后启动 p4v。然而,今天早上我在终端登录之前启动了 p4v。我收到连接对话框,我很快退出,转到终端并进行 p4 登录,然后尝试再次启动 p4v。

现在,当我双击桌面上的 p4v 图标时,我收到的只是以下消息:

无法以用户身份登录 SERVERNAME“

(最后的那个单独的双引号不是拼写错误——这正是消息所说的)。

并且 p4v 无法启动。消息框显示“再试一次?”,无论我单击“是”还是“否”,它都不会启动。我该如何克服这个问题?

perforce

6
推荐指数
1
解决办法
4659
查看次数

C++中的Unicode字符串索引

我来自python,你可以使用'string [10]'按顺序访问一个字符.如果字符串是用Unicode编码的,它会给我预期的结果.但是当我在C++中对字符串使用索引时,只要字符是ASCII就可以工作,但是当我在字符串中使用Unicode字符并使用索引时,在输出中我将得到像/ 201这样的八进制表示.例如:

string ramp = "Ðð??ŠšÝýÞþŽž";
cout << ramp << "\n";    
cout << ramp[5] << "\n";
Run Code Online (Sandbox Code Playgroud)

输出:

Ðð??ŠšÝýÞþŽž
/201
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,如何在字符串表示中访问该字符,或者如何将八进制表示转换为实际字符?

c++ string unicode

5
推荐指数
2
解决办法
2232
查看次数

为什么在 URL 百分比解码算法中“使用除 utf-8 解码器以外的任何解码器......可能不安全”?

我正在实现一个 URL 解析器,并对 W3C URL 规范有疑问(位于http://www.w3.org/TR/2014/WD-url-1-20141209/)在“2. 百分比编码字节”部分中它有以下算法(强调):

要对字节序列输入进行百分比解码,请运行以下步骤:

当输入包含 0x00 到 0x7F 范围之外的字节时,使用除 utf-8 解码器之外的任何解码器可能不安全,不建议这样做。

  1. 令输出为空字节序列。

  2. 对于输入中的每个字节,运行以下步骤:

    1. 如果字节不是“%”,则将字节附加到输出。

    2. 否则,如果 byte 为 '%' 并且输入中 byte 之后的接下来两个字节不在 0x30 到 0x39、0x41 到 0x46 和 0x61 到 0x66 范围内,则将字节附加到输出。

    3. 否则,运行这些子步骤:

      1. 令 bytePoint 为输入中字节后的两个字节,已解码,然后解释为十六进制数。

      2. 将值为 bytePoint 的字节添加到输出。

      3. 跳过输入中接下来的两个字节。

  3. 返回输出。

在原始规范中,“解码”一词(上面以粗体显示)是指向 UTF-8 解码算法的链接。我假设这是上面第二句(斜体)中提到的“utf-8 解码器”。

据我所知,无效的 UTF-8 字节序列可能会导致安全问题。然而,在使用解码器的步骤中,字节已经被前面的子步骤 2 验证为有效的 ASCII 十六进制数字,因此在这里使用 UTF-8 解码器来确保安全似乎有点矫枉过正。

谁能解释一下,当解码器仅用于 0x30 到 0x39、0x41 到 0x46 和 0x61 到 0x66 范围内的字节值时,在此算法中使用 UTF-8 解码器以外的其他解码器可能会不安全?或者我对规范中的某些内容的解释不正确?

在我看来,0x00 到 0x7f 范围之外的任何字节都将简单地按原样复制到输出(在子步骤 …

unicode url url-parsing utf-8

5
推荐指数
0
解决办法
129
查看次数

服务器应如何响应其希望拒绝的来源的 CORS 请求?

我正在服务器内实现 CORS 协议,遵循CORS 标准。我的问题是当服务器希望拒绝特定来源时应如何响应。

我了解在允许来源时如何响应简单的预检请求。但是对于那些服务器不允许的 Origin 如何响应呢?我最初的猜测只是不返回任何 CORS 标头,这会导致预检请求失败(如所需)。

该标准在第 3.2.3 节中简要提到了这一点,但听起来它描述的是根本不希望参与 CORS 的服务器(与想要参与 CORS 并允许某些来源但不允许其他来源的服务器相反) ):

如果服务器不希望参与 CORS 协议,则其对 CORS 或 CORS 预检请求的 HTTP 响应不得包含任何上述标头。鼓励服务器在此类 HTTP 响应中使用 403 状态。

这是响应服务器不允许的来源的正确方法吗?客户端似乎可能会误解为“该服务器不允许任何跨源请求”(实际上,问题出在这个特定的源上,并且服务器将允许其他源)。

我知道这个问题,但它指的是规范的过时版本,答案似乎并不明确。

cors

5
推荐指数
1
解决办法
1115
查看次数

新行字符是否与前一个字符在同一行中

我为什么要问?

我被赋予了重新实现文本框GUI小部件和类型编写器的严峻任务,因此这是此问题的起源.


我目前的做法

目前在我的项目中,新行字符\n保存下一行(column1,line + 1)最终第一个字符的位置坐标.但是,我担心这不是对换行位置的标准理解.


新行字符是否与\n前一个字符在同一行中,它是下一行的一部分(因为它在我当前的方法中)或者它们都不是?


这有什么不同吗?

我在使用退格键删除新行时遇到了复杂问题,因为我必须为此事件实现特定条件,但我试图避免这种情况(或者可以通过更改处理新行字符的方式来避免),因为从所有这些条件来看,我看起来正在尝试发明AI或其他东西.

c user-interface textbox position newline

4
推荐指数
1
解决办法
101
查看次数

如何在Shell中执行不带.sh扩展名的文件

我想在不带.sh扩展名的bash中执行文件。

示例:我有一个文件“ abc.sh”,可以直接执行(因为我在第一行中添加了#!/ bin / bash),但我希望文件名只是“ abc”

unix linux shell sh

4
推荐指数
2
解决办法
7924
查看次数

使用vfprintf()时出现分段错误

以下程序遇到了分段错误,我无法弄清问题是什么.

  1 #include<stdio.h>
  2 #include<stdarg.h>
  3 void writeformat(FILE*,char*, ...);
  4 int main()
  5 {
  6   FILE *fp;
  7   fp=fopen("file1.txt","w");
  8   writeformat(fp,"/modules.php?name=Top&querylang=%20WHERE%201=2%20ALL%20SELECT%201,pwd,1,1%20FROM%20nuke_authors/*");
  9   fclose(fp);
 10   return(0);
 11 }
 12 
 13 void writeformat(FILE *stream,char *format, ...)
 14 {
 15   va_list args;
 16   va_start(args,format);
 17   vfprintf(stream,format,args);
 18   va_end(args);
 19 }
Run Code Online (Sandbox Code Playgroud)

我试过gdb,它告诉我问题在于vfprintf():

(gdb) run
Starting program: /ws/anaganes-sjc/junk 
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000

Program received signal SIGSEGV, Segmentation fault.
0x0000003c44c7fb30 in wcslen () from /lib64/libc.so.6
(gdb) …
Run Code Online (Sandbox Code Playgroud)

c c++ segmentation-fault

3
推荐指数
1
解决办法
3699
查看次数

当我尝试使用p4 client -d删除工作区时,我收到消息"客户端已锁定,无法删除"

我正在尝试删除perforce中的工作区(客户端),所以我输入

p4 client -d my-client
Run Code Online (Sandbox Code Playgroud)

但我收到错误信息

客户端已锁定,无法删除

如何解锁工作区以便删除?

perforce

3
推荐指数
2
解决办法
3545
查看次数

如何在perforce中将本地修改的文件与服务器修订同步

我正在使用服务器版本更新本地修改的文件,以便我拥有所有最新的更改(其他开发人员在我处理文件时所做的更改).我已经尝试过p4同步.有谁知道处理这个问题的正确方法?

谢谢

perforce

1
推荐指数
1
解决办法
3238
查看次数

C++开关案例

我正在基于C++ switch语句在线进行测验.我遇到了一个问题,我对switch语句的工作方式有了一个公平的理解,但这个问题对我来说完全没有意义.有人可以解释一下吗?

截图!

为什么答案是D而不是C?案例2:默认情况还是什么?该测验可在以下网址找到:http://www.cprogramming.com/tutorial/quiz/quiz5.html

c++

1
推荐指数
1
解决办法
1813
查看次数