gpt4 book ai didi

c++ - 未记录的 API 和 header

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:39 25 4
gpt4 key购买 nike

我在我的一个 Objective-C 项目中使用 JavaScriptCore,我想随时知道当陷入 JS 回调时当前文件和行是什么。

没有办法用 public headers 做到这一点, 所以我看了一下 sources并且似乎可以通过使用一些 C++ 代码来访问文件和行。

// ctx is a JSContextRef, that's the only type I have an access to
JSC::JSValue jsCtx = toJS(ctx);
CodeBlock* codeBlock = jsCtx->codeBlock();

// Line
unsigned sourceOffset = codeBlock->sourceOffset();

// Source URL
SourceProvider* sourceProvider = codeBlock->source();
const String& url = sourceProvider->url();

显然需要定义JSCJSValueCodeBlockSourceProvider。我将所有这些都放在单独的标题中,但它确实很大。

  • 我应该直接包含这些 header 吗?
  • 如果这些文件需要其他 header 怎么办?我最终可能会拥有多个我不会使用的 header 。
  • 让我们忘记内部源代码可能会改变:我想做的事情有可能实现吗?

最佳答案

您可以从公共(public) header 本身了解此信息。给你:

当异常发生时,异常对象包含以下键:

行、sourceId、sourceURL、名称、消息

您可以访问这些键的值以查找异常发生在哪个文件 (sourceURL) 和行号 (line) 中。

例子:

JSObjectRef exceptionObj = JSValueToObject(context, exception, NULL);

//Convert the exceptionObj into dictionary (I leave the implementation of this to you..)
NSDictionary *exceptionDict = [self convertJSObjectToDictionary:exceptionObj];

NSString *lineNumber = [exceptionDict objectForKey:@"line"];
NSString *fileName = [exceptionDict objectForKey:@"sourceURL"];

NSLog(@"Exception has occurred in file:%@ at line number:%@", fileName, lineNumber);

希望这对您有所帮助!

~苏尼尔帕尼曼尼

关于c++ - 未记录的 API 和 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com