- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有这样的代码:
var foo: Int = 0
print (foo)
在 print
行处设置断点...然后执行以下操作:
(lldb) exp foo = 7
(lldb) p foo
(Int) $R2 = 7
0
print(x)
仍然返回 0
而不是 7
。这怎么可能?
最佳答案
更多详细信息会有所帮助,但总的来说,我在三种情况下看到过这种情况:
1) 当你有一个let时,编译器可以自由地将let替换为其值。这不是你的情况,但为了论证,考虑到:
let x = 0
print(x)
编译器可以自由地将其重写为
print(0)
保留 let 绑定(bind)只是为了调试器。现在,let 就是let,所以写入它并不完全是一个明确定义的操作。话虽如此,C 编译器似乎并没有对 const 值采取同样的方法,因此失败模式可能会让某些人感到惊讶
2) 如果您调用函数,编译器(本质上)将发出代码将参数压入堆栈,然后跳转到该函数的代码。理论上,人们会期望调试信息中的行表引导调试器在参数被推送之前停止。然后,
>> push x
call print
对 x 的写入实际上在打印调用的上下文中“意味着”某些内容。但是,如果行表实际上让我们在调用处停止,即使您写入“x”,它也已经被推送,并且将使用旧值
3) 编译器实际上可能使用寄存器中的“foo”副本,但为了调试信息,将我们指向“foo”的堆栈副本,该副本实际上从未使用过,仅更新当写入“foo”发生时。如果是这种情况,LLDB 将很乐意写入堆栈,但这不会影响程序的行为,因为它实际上并未从堆栈中读取
尝试解决这个问题的有趣事情包括:
LLDB反汇编命令
(lldb) reg read pc
(lldb) dis -s <value of program counter>
或
(lldb) fr var -L foo
然后读取LLDB给出的内存地址(或寄存器)作为“foo”的位置
或
在您的应用中, print(x) 两次,然后查看第二次打印是否显示不同的值
关于Swift LLDB 不改变值/没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702662/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!