Подпрограмма, которую вы пытаетесь вызвать, работает, когда вы используете ее в исходном коде, даже если функция принимает std :: string и вы передаете ей строку C, потому что компилятор знает, как преобразовать строку C ( "ads") в std :: string. Анализатор выражений lldb недостаточно умен, чтобы выполнять приведение типов таким образом.
Даже если бы он был достаточно умен, чтобы попробовать это, создание экземпляров шаблона также не является тривиальной операцией, и анализатор выражений lldb только начинает учиться тому, как это делать. Если есть версия вашей функции отладки, которая принимает строку C, вы можете использовать ее. Или, может быть, вы можете добавить в свой код оболочку, которая на самом деле принимает строку C. То, что вы должны иметь возможность легко вызывать в анализаторе выражений.
Я не знаю достаточно о Мэриан, чтобы ответить на вторую часть вашего вопроса. Какое хранилище имеет этот тензор? Это аргумент интересующих вас функций, локальная переменная или какое-то глобальное хранилище?
Кстати, тот факт, что анализатор выражений сказал:
warning: Stopped in a C++ method, but 'this' isn't available; pretending we are in a generic context
вероятно означает, что вы отлаживаете оптимизированный код, поскольку при -O0 компилятор обычно поддерживает this
для всей функции. Если вам нужно отладить оптимизированную версию, например, потому что неоптимизированный код слишком медленный, чтобы быть полезным, то это ваша судьба. Но при отладке оптимизированного кода у вас часто не будет доступа в отладчике ко всем переменным, определенным в вашем коде.